| This article is archived because it is not considered relevant for third-party developers creating commercial solutions today. The article is believed to be still valid for the original topic scope. |
This is version 2 of HTTP service. To use it in non-generic calls you must specify the attribute version="2" in widget.xml:/widget/services/service or in generic calls directly in the call (see call documentation.)
Contents |
With the HTTP service the script can execute HTTP GET and HTTP POST methods. If the MIME type of the response is human readable text ("text/..."), the response is a string, otherwise it is binary. The output of the HTTP service can be processed with a filter. (See Advanced filters.)
The HTTP service can have the following service parameters that are configured in the XML configuration:
| Service parameter | Function |
|---|---|
| auth | When using TOKEN authentication, the service id of the tokenauth type service must be set here. (See Token Authentication for an example.) |
| url | When using the exec action the URL must be specified here. |
| method | When using the exec action the METHOD can be specified here. If it is not specified, the default method will be GET. |
HTTP service has three actions that are called from the script code:
| Service action | Function |
|---|---|
| exec | Exec executes a pre-specified HTTP GET or POST to an URL given in the widget.xml. The method can be specified there also. |
| get | Get executes a HTTP GET to the URL specified. |
| post | Post executes a HTTP POST to the URL specified. |
With get, post, and exec actions, additional request parameters can be added. In get only the string type parameters are appended to the querystring, and in post depending on the nature of the parameters they are either sent as:
Content-Type: application/x-www-form-urlencoded; charset=utf-8
when all parameter values are strings
OR
Content-Type: multipart/form-data
when there are also other types of parameter values than strings. The values of other types must be accompanied with the MIME type of the data.
The exec action maps to either HTTP GET or HTTP POST depending on its configuration. The exec action differs from get and post actions so that the URL cannot be given in the request (the call coming from the WidSets client). It has to be pre-specified in the widget.xml. The only input exec takes is the request parameters.
With the exec action it is possible to hide the URL to the destination. The URL can contain a token or some credentials to identify the call coming from WidSets. If the parameter in widget.xml is specified as visible=false, editable=false and sendmobile=false it will not be visible or delivered to the mobile client. A certain business-to-business API could be implemented this way.
Both get and post actions take the same kind of input. Get maps to HTTP GET and post maps to HTTP POST. The only required parameter in both actions is url. Other optional parameters are:
The following are the specifications for the available service actions.
#!format=registry; charset=ISO-8859-1
namespace "2" is ContentHandler
{
ActualContent = (choice (string textContent)
(bytes dataContent)
(any filteredData)
(null noData))
Headers = (list (repeat (bind (string name) (string value))))
Content = (list (bag (required (bind (const content) (use ActualContent)))
(optional (bind (const status) (int statusCode)))
(optional (bind (const headers) (use Headers)))))
FetchInput = (list (bag (bind (const url)
(string urlToFetch))
(optional (bind (const params)
(list (repeat (use RequestParameter)))))
(optional (bind (const enccharset)
(string urlEncCharset)))
(optional (bind (const returnheaders)
(boolean returnHeaders)))
(optional (bind (const returnstatus)
(boolean returnStatus)))
(optional (bind (const headers)
(use Headers)))))
RequestParameter = (bind (string paramName)
(choice (string paramValue)
(int paramValue)
(boolean paramValue)
(list (string mimeType)
(bytes data))))
namespace exec is ContentAction
{
input = (list (repeat (use ../RequestParameter)))
output = (use ../Content)
generic = false
}
namespace get is ContentAction
{
input = (use ../FetchInput)
output = (use ../Content)
generic = true
}
namespace post is ContentAction
{
input = (use ../FetchInput)
output = (use ../Content)
generic = true
}
}
<services>
<service type="http" version="2" id="docall">
<reference from="url" to="url" />
<reference from="method" to="method" />
</service>
</services>
<parameters>
<parameter name="url" visible="false" editable="false" protected="true" sendmobile="false">
<value>http://www.widsets.com/secret_test.php?username=antti</value>
</parameter>
<parameter name="method" value="get" />
</parameters>
No related wiki articles found