• No results found

pub.client:soapClient

WmPublic. Creates and sends SOAP 1.1 and SOAP 1.2 messages over HTTP, HTTPS, or JMS transports for any style/use combination supported by Integration Server.

Input Parameters

address String String specifying the URI of the web service endpoint.

If you are submitting the request to an Integration Server, remember to direct it to the default SOAP processor (ws) as shown in the following example:

http://rubicon:5555/soap/ws/example:calculator

request Document The input parameters that are to be passed to the

web service.

wsdName String The name of the consumer web service descriptor that

contains the operation you want to invoke.

wsdBinderName String The name of a binder that contains information to use

to create and send the request. This binder must be in the consumer web service descriptor specified in wsdName.

Note: The consumer web service endpoint alias assigned to a

binder indicates which proxy server Integration Server uses to send the request. For more information about proxy server usage and web service endpoint aliases, see the

webMethods Integration Server Administrator’s Guide guide. wsdOperationName String The name of the operation that you want to invoke.

This operation must be contained in the binder specified in

wsdBinderName.

targetInputSignature String Fully qualified name of the IS document type to use to

validate and encode the contents of request.

targetOutputSignature String Fully qualified name of the IS document type to use to

validate and decode the output value returned by the web service.

soapHeaders Document Optional. Header documents included in the

3 Client Folder

transportHeaders Document Optional. Transport header fields that you want to

explicitly set in the request issued by the pub.client:soapClient service. Specify a key in transportHeaders for each header field that you want to set, where the key's name represents the name of the header field and the key's value represents the value of that header field.

The names and values supplied to transportHeaders must be of type String. If a transport header has a name or value that is not of type String, the header will not be included in the message.

The headers that you pass in to transportHeaders vary

depending on the transport used to send the SOAP message. The supplied wsdBinderName determines the transport. For more information about specifying transportHeaders, refer to

“Usage Notes” on page 138.

method Document Optional. The QName of the requested procedure.

The name is defined as follows:

Key Value

namespaceName String Namespace portion of the

procedure's QName.

localName String Local portion of the

procedure's QName.

Note: The method parameter applies when style is RPC.

auth Document Optional. Parameters specifying the credentials

that are to be submitted to the server specified in address. Integration Server allows two levels of authorization

credentials: transport level and message level. Each element is defined as follows:

Key Description

transport Document Optional. Transport level

authorization parameters.

Key Description

type String Optional. Type

of authentication that the service will perform.

3 Client Folder

user String Optional. User

name that this service will use if one is requested.

pass String Optional.

Password that this service will submit if one is requested.

serverCerts Document Optional.

The message signer's private key and certificate chain.

privateKey Object The

SOAP message signer's private key.

certChain Object List A

list containing the signer's complete certificate chain, where element 0 in the list contains the signer's certificate and element 1 contains the CA's certificate.

message Document Optional. Message level

authorization parameters.

Key Description

user String Optional. User

name that this service will use if one is requested.

pass String Optional.

Password that this service will submit if one is requested.

3 Client Folder

serverCerts Document Optional.

The message signer's private key and certificate chain.

privateKey Object The

SOAP message signer's private key.

certChain Object List A

list containing the signer's complete certificate chain, where element 0 in the list contains the signer's certificate and element 1 contains the CA's certificate.

partnerCert Object Optional. The

partner's complete certificate chain, where element 0 in the list contains the message signer's certificate and element 1 contains the CA's certificate.

timeout String Optional. Time (measured in milliseconds) to wait for

a response from the server hosting the web service before timing out and terminating the request.

A value of 0 means Integration Server waits for a response indefinitely. If the connection to the host or JMS provider ends before Integration Server receives a response, the service ends with an exception and a status code of 408.

3 Client Folder

Output Parameters

If this parameter is not specified, or an invalid (non-numeric) value is specified, Integration Server uses one of the

following values:

 For HTTP, Integration Server uses the value of the watt.server.SOAP.request.timeout server configuration parameter as the timeout value

 For JMS, Integration Server uses the value of the

watt.server.soapjms.request.timeout server configuration parameter as the timeout value.

For more information about

watt.server.SOAP.request.timeout and

watt.server.soapjms.request.timeout server configuration parameter, see webMethods Integration Server Administrator’s

Guide.

Integration Server ignores timeout if the name/value pair

jms.async= true is passed in to transportHeaders.

soapAction String Optional. Specifies one of the following:

If soapProtocol is set to SOAP 1.1 Protocol, specifies the value to which you want to set the SOAPAction HTTP header.

If soapProtocol is set to SOAP 1.2 Protocol, specifies the value to which you want to set the action attribute in the

Content-Type header.

Integration Server ignores soapAction in either of the following situations:

 The Content-Type header is passed in to transportHeaders

and soapProtocol is set to SOAP 1.2 Protocol.

 The soapAction header is passed into transportHeaders

and soapProtocol is set to SOAP 1.1 Protocol.

soapProtocol String Optional. Indicates the SOAP protocol the service uses

to send messages. Valid values are SOAP 1.1 Protocol or

SOAP 1.2 Protocol.

encoding String Optional. Specifies the encoding method. Default

value is UTF-8.

Integration Server ignores encoding if the Content-Type header is passed in to transportHeaders.

soapResponseData Object A SOAP object containing the SOAP response message

3 Client Folder

response Document Output parameters returned from the web service. header Document Conditional. Headers from the response and request

messages.

header contains the following keys:

Key Value

requestLines Document Conditional. Header fields from

the request message. Each key in

requestLines represents a line (field) in the

request header. Key names represent the names of header fields. The keys' values are Strings containing the values of the fields.

The contents of the requestLines document are not identical to transportHeaders. The transport can add, remove, or alter specific headers while processing the request.

Whether or not the web service connector returns the requestLines parameter

depends on the success or failure of the pub.client:soapClient service. In the case of failure, the point at which the failure occurs determines the presence of the

requestLines parameter. For more

information, see the usage notes for this service.

For the HTTP or HTTPS transports, the

requestLines parameter will not contain

any HTTP headers that the transport mechanism added or modified when sending the request.

3 Client Folder

For the JMS transport, each key in

requestLines represents a JMS message

header. Key names represent the names of header fields. Key values are Strings containing the values of the header fields. The JMS provider populates some JMS message header fields after it successfully receives the JMS message. Additionally, the Integration Server specific run-time properties (properties that begin with the “jms.” prefix) are not returned in JMS transport, each key in requestLines. The JMS provider uses the information in these properties to populate the JMS message header fields that correspond to the properties.

lines Document Header fields from the

response. Each key in lines represents a field (line) of the response header. Key names represent the names of header fields. The keys' values are Strings containing the values of the fields. Whether or not the pub.client:soapClient service returns the lines parameter depends on the success or failure of the service. In the case of failure, the point at which the failure occurs determines the presence of the lines parameter. For more information, see the usage notes for this service.

For the HTTP or HTTPS transports, the

lines parameter contains any

HTTP/HTTPS headers present in the response.

For the JMS transport, the lines parameter contains the JMS headers present in the response.

status String Status code from the request,

returned by the underlying transport. response. For more information about status codes returned by the service, see the usage notes for this service.

3 Client Folder

Usage Notes

If the address begins with https:, you must specify a private key and certificate chain. You can use the auth/transport/serverCerts parameters to do so. If you do not specify them using the auth/transport/serverCerts parameters, pub.client:soapClient uses the web service endpoint alias specified in the binder. If the endpoint alias does not have an associated private key and certificate chain, then the default outbound SSL certificate settings are used to authenticate the resources.

As part of executing pub.client:soapClient, Integration Server executes any service handlers assigned to the consumer web service descriptor specified in wsdName.

When a document type contains a String variable that represents a required attribute (meaning that the variable name starts with the "@" symbol and the Required property is set to True in Designer) and the input document does not contain the required attribute, Integration Server adds an empty attribute during document encoding. For example, if the document type contains a required String variable named @myAttribute but

@myAttribute is missing from the input document, Integration Server adds myAttribute ="" to the XML document.

Note: Because empty xmlns attributes are invalid, if the document type contains a

required String variable named @xmlns and the input document does not specify a value for the @xmlns attribute, Integration Server does not add xmlns="" to the XML document.

statusMessage String Status message returned by the

transport. For more information about status messages returned by the service, see the usage notes for this service.

soapStatus String Flag indicating whether the SOAP request message was

processed successfully.

A value of... Indicates that...

0 The remote server successfully processed

the SOAP request and returned a SOAP response message.

1 The remote server returned a SOAP fault,

indicating that the SOAP request was received but was not processed successfully.

2 The server returned an error that was not

a SOAP fault. This indicates that some type of HTTP error occurred (often, an HTTP 404). You can check the status field in header to determine the type of HTTP error that occurred.

3 Client Folder

Keep the following points in mind when specifying transportHeaders for HTTP or HTTPS:

For any header name/value pair supplied in transportHeaders, Integration Server simply passes through the supplied headers and does not perform any validation for the headers.

If you do not set transportHeaders or do not specify the following header fields in

transportHeaders, Integration Server adds and specifies values for the following

header fields:  Accept  Authorization  Connection  Content-Type  Host

 SOAPAction (Added when soapProtocol is SOAP 1.1 only)

 User-Agent

Important! Pass in the preceding headers to transportHeaders only if you are an

experienced web service developer. Incorrect header values can result in failure of the HTTP request.

 If you specify Content-Type in transportHeaders, Integration Server ignores the value of the encoding input parameter.

 If you specify Content-Type in transportHeaders and the soapProtocol input parameter is set to SOAP 1.2, Integration Server ignores the value of the soapAction input parameter.

 If you specify the SOAPAction header in transportHeaders and the soapProtocol input parameter is set to SOAP 1.1 Protocol, Integration Server ignores the value of the

soapAction input parameter.

 If MTOM processing converts any portion of the SOAP request to an MTOM/XOP

attachment, it will overwrite the Content-Type value supplied to the transportHeaders input.

 Integration Server sets the value of Content-Length automatically and overrides any value passed in to transportHeaders.

 Integration Server automatically adds the Cookie header to the HTTP header and supplies any cookies established between Integration Server and the HTTP server with which it is interacting. If you supply the Cookie header to transportHeaders, Integration Server prepends the values you supply to the already established Cookie header value.

 The following headers are considered to be standard and require the specified capitalization: Accept, Authorization, Connection, Content-Type, Cookie, Host, SOAPAction, User-Agent.

3 Client Folder

 Using capitalization other than that which is specified results in undefined behavior.

 Supplying duplicate entries for any standard header results in undefined behavior. Keep the following points in mind when specifying transportHeaders for JMS:

Specify a key in transportHeaders for each header field that you want to set, where the key’s name represents the name of the header field and the key’s value represents the value of that header field.

You can specify the following JMS message header fields in transportHeaders:

 JMSCorrelationID

 JMSType

Note: The JMSCorrelationID and JMSType names are case-sensitive.You can specify the following JMS-defined properties in transportHeaders:

 JMSXGroupID

 JMSXGroupSeq

If the value of JMSXGroupSeq is not an integer, Integration Server ignores the name/value pair and does not place it in the message header.

Note: The JMSXGroupID and JMSXGroupSeq names are case-sensitive.

 The “JMSX” prefix is reserved for JMS-defined properties. If a header whose name

starts with “JMSX” is passed into transportHeaders and it is not named JMSXGroupID or JMSXGroupSeq, Integration Server generates a fault and returns it to the service.

 You can set any provider-specific property whose name starts with “JMS_” in

transportHeaders. Integration Server maps a supplied name/value pair whose name

starts with “JMS_” directly to a JMS message property. Because the JMS standard reserves the prefix “JMS_<vendor_name>” for provider-specific properties, Integration Server does not validate the name or value of this content.

Note: The JMS provider determines which provider-specific properties to accept and

include in the JMS message properties. For more information about provider-specific message properties how the JMS provider handles them, review the JMS provider documentation.

You can use transportHeaders to specify run-time properties that affect the values of the JMS message and JMS message headers. The following table identifies these properties and indicates the JMS message header fields affected by each property.

3 Client Folder

Property Name Description

jms.async Indicates whether this is a synchronous or asynchronous

request/reply. This run-time property does not affect a JMS message header field.

Note: This property applies when pub.client:soapClient calls an

operation with an In-Out message exchange pattern only

Value Description

true Indicates this is an asynchronous

request/reply. Integration Server does not wait for a response message before executing the next step in the flow service.

If jms.async is true, Integration Server ignores the timeout input parameter.

false Default. Indicates this is a

synchronous request/reply.

Integration Server waits for a response before executing the next step in the flow service.

jms.deliveryMode Specifies the message delivery mode for the message.

Integration Server uses this value to set the JMSDeliveryMode header.

Value Description

PERSISTENT Indicates the request message is

persistent.

2 Default. Indicates the request message

is persistent.

NON_PERSISTENT Indicates the request message is not

persistent.

1 Indicates the request message is not

persistent.

Note: If the jms.deliveryMode is not one of the above values, Integration Server ignores the name/value pair and uses the default value of 2.

3 Client Folder

 The lowercase “jms.” prefix is reserved for run-time properties used by Integration Server. If a header starts with “jms.”and is not one of the “jms.” properties defined by Integration Server, Integration Server ignores the property.

The header information returned when pub.client:soapClient executes an operation in a web service descriptor created on Integration Server version 8.2 or later varies depending on the following:

 The transport used to send the SOAP message which is determined by the

wsdBinderName

 The success or failure of the pub.client:soapClient service and if failure occurs, the point at which that happens

The message exchange pattern for the operation specified in wsdOperationName

jms.messageType Message type identifier for the message. Integration Server

uses this value to set the JMSType header. Specify one of the following:

 BytesMessage

 TextMessage

Note: If thejms.messageTypevalue is not BytesMessage or TextMessage, Integration Server ignores the name/value pair and uses the default value of BytesMessage

jms.timeToLive Length of time, in milliseconds, that the JMS provider retains

the message. A value of 0 means that the message does not expire.

The JMS provider uses this value to set the JMSExpiration header in the sent JMS message.

Note: If the jms.timeToLivevalue is not a valid Long,

Integration Server ignores the property and uses the default value of 0.

jms.priority Specifies the message priority. The JMS standard defines

priority levels from 0 to 9, with 0 as the lowest priority and 9 as the highest.

Integration Server uses this value to set the JMSPriority header.

If the jms.priority value is not a value between 0 to 9,

Integration Server ignores the property and uses the default value of 4.

3 Client Folder

Note: The same conditions that affect the contents of header also determine whether the

soapResponseData contains a SOAP response, a SOAP fault, or an exception.

The following table identifies the basic success and failure scenarios when

pub.client:soapClient service executes an operation in a web service descriptor created on Integration Server version 8.2 or later and the header information that would be returned in each scenario. The table also indicates whether the scenario results in a SOAP

response, SOAP fault, or exception being returned in soapResponseData.

Note: JMS status codes as well as the status code 900 are specific to Integration Server and

are not derived from any standard.

Use Case

The pub.client:soapClient service fails before sending the SOAP request.

Parameter Description

status 900

statusMessage Error occurred while preparing SOAP request

requestLines returned? Yes, if the web service connector created the SOAP request successfully but execution failed before sending the request.

lines returned? No

soapResponseData Contains an exception.

Use Case

The pub.client:soapClient service fails while sending the SOAP request.

Parameter Description

status For HTTP, the status code will be the value returned by the HTTP server.

For JMS, the status code will be 400.

statusMessage For HTTP, the status message will be the message returned by the HTTP server.

For JMS, the status message will be: Error occurred while