Type to start searching...

HTTP

An HTTP Integration Channel.

Description
Properties on a raw message (see Message) for an HTTP channel include:


   * channel - the channel name on which the message was received or will be sent
   * body - the string or binary body of the message to send. Body is not sent when the method is GET.
   * correlationId - an identifier used to correlate messages. This is currently only used on MessageQueue
     channels for JMS messages.
   * url - the base URL on which to send the request. e.g. http://localhost:7080/nexj/xml/Account.
     If the URL doesn’t need to change at run-time, you can just specify the URL in the channel
     properties.

     If you want to override the URL or any other channel settings at deploy-time, modfy the channel settings in
     the currently selected Connection.  URLs can also be dynamically set when called from Services.  This
     can only be done when sending a raw message (see Message).  In this case, set the url property on the
     raw HTTP transfer object e.g. (this'url "http://www.nexj.com/example").

     You can retrieve the currently set URL with ((((invocation-context)'metadata)'getChannel "MyChannelName")'url)
     and modify it with code.
   * method - The type of HTTP request. On outbound, Defaults to "GET" if the body is null, "POST" if
     the body is specified.
   * headers - A transfer object with key/value pairs of headers from the incoming message or headers to send out.
   * parameters - A transfer object with key/value pairs of parameters from the incoming message or parameters
     to send out.  The values should be strings or something that is easily encoded as a string and will
     be URL encoded automatically.

     In a "GET" request the parameters will be encoded and appended to the URL.

     In a "POST" request the parameters will be encoded and put in the body of the request unless the URL contains
     a question mark followed by one or more parameter/value pairs.  In this case the parameters whose names match the
     parameters in the URL will be encoded into the URL and the remaining parameters will be encoded in the body.
     If any parameters will be placed in the body, you must set the content type to "application/x-www-form-urlencoded".
     This may be done by setting the "Content Type" field in the Channel metadata. If you wish to set this at run-time,
     it should be set in the message headers, e.g.:

     (: headers
        (message
           (: Content-Type "application/x-www-form-urlencoded")
        )
     )

     If both parameters and a body are specified, the parameters that would have gone into the body will be discarded.
   * path - the path after the channel name in the incoming request URL. e.g. /nexj/xml/Account
   * principal
   * status - Status code of the HTTP response, e.g. 200
   * password
   * message - e.g. "OK"
   * proxyHost
   * proxyPort
   * proxyUser
   * proxyPassword

Properties
agent : string

Sender User-Agent.

Example


user-agent: Mozilla/5.0 (Linux; X11)

authComponent : string

Authentication interceptor component.

binary : boolean

True if the data is binary, false if string. If unset, the data type is determined from HTTP headers for each request.

category : string

The category of the channel.

combine

Resolution algorithm for multiple bound services processing the same message. (Default none - meaning multiple services with the same message is not supported)

Valid values based on“string”.
none

Multiple services declaring the same message in their associated Interface Request messages are not supported. (Default)

first

Only the first one among the bound services with a matching message in their Interface Request messages is invoked.

all

All the services with a matching message in their Interface Request messages are invoked.

When multiple services are bound to a channel and a message is forwarded to more than one of those services, the initial "this" variable in those services refers to the same object. This should be taken into account if the original message object can be updated in any of the services – you might want to modify a copy of the message instead.
connectionTimeout : nonNegativeInt

Timeout in milliseconds for establishing HTTP connections, 0 for infinite timeout.

Valid values based on“int”.
0 (minInclusive)
contentType : string

The default HTTP mime type of the body of the request (used with POST and PUT requests) or response content (http request/response).

This header indicates the Internet media type of the message content, consisting of a type and subtype.
Example
Common values include:


* application/x-www-form-urlencoded - use this when POSTing parameters
* application/javascript
* application/pdf
* application/xhtml+xml
* application/json
* image/gif
* image/jpeg
* text/html
* text/xml
* text/plain

see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html and http://en.wikipedia.org/wiki/Internet_media_type#List_of_common_media_types
delete : boolean

True if the HTTP DELETE method is implemented.

description : string

Channel description.

error : string

Expression returning non-#f if the message should be treated as an error.

This property is used to specify special cases that you want to handle yourself. By default anything other than a status of 200 will be treated as an error. The raw message is passed as "this".
Example


; accept responses with status code of OK (200) or Redirection (302) - reject all others
(not (in? (this'status) '(200 302)))

get : boolean

True if the HTTP GET method is implemented.

head : boolean

True if the HTTP HEAD method is implemented.

idle : boolean

True to disable the channel if it is not used by an enabled channel.

maxSenders : integer

Maximum HTTP sender connections per server, -1 for unlimited.

maxSize : nonNegativeInt

Maximum HTTP request size in bytes. Defaults to the global maximum HTTP request size.

Valid values based on“int”.
0 (minInclusive)
nodeType : string

Name of target cluster partition, defaults to null for nodes of any type.

options : boolean

True if the HTTP OPTIONS method is implemented.

post : boolean

True if the HTTP POST method is implemented.

privilege : string

Privilege required to access the HTTP channel receiver.

put : boolean

True if the HTTP PUT method is implemented.

readTimeout : nonNegativeInt

Timeout in milliseconds for outbound HTTP requests, 0 for infinite timeout.

Valid values based on“int”.
0 (minInclusive)
receive : boolean

True if the channel can receive messages.

send : boolean

True if the channel can send messages.

stealth : boolean

True to supress the debug logging, unless nexj.system.core.meta.integration.Channel.<name> category dump logging is enabled.

trace : boolean

True if the HTTP TRACE method is implemented.

url : string

Default HTTP request URL.

warningTimeout : nonNegativeLong

Timeout in milliseconds before a warning is generated, 0 for infinite timeout.

Valid values based on“long”.
0 (minInclusive)
Content