HTTP and SOAP Provider::HttpRequest
Generates and sends Hypertext Transfer Protocol (HTTP) GET, PUT and POST requests to a remote Web server. This procedure supports requests that perform updates subject to rollback. (A related procedure, HTTP and SOAP Provider::SoapRequestWithNoRollback, supports requests such as queries that do not require rollback.) Used by Microsoft Provisioning Framework (MPF).
Arguments
The following table describes the XML schema elements and attributes. Unless otherwise indicated, the data type is string.
Element | Description, relationships, and attributes |
---|---|
body |
Description:
There are two ways to pass parameters: as a single string in the body node or as param nodes of the bodyParams node. Use the first style to pass an existing parameter string. Use the second style if you want the Providers [HMC SDK] to build the query string for you from other input parameters when it sends the POST or PUT request. The following sample code illustrates this:
For the latter, the provider combines the param names and values into a body with a value of "username=Bill&password=foo". Parents: |
bodyParams |
Description: There are two ways to pass parameters: as a single string in the body node or as param nodes of the bodyParams node. Use the first style to pass an existing parameter string. Use the second style if you want the provider to build the query string for you from other input parameters when it sends the POST or PUT request. The following sample code illustrates both styles:
For the latter, the provider combines the param names and values into a body with a value of "username=Bill&password=foo". Parents: Child: |
certificateName |
Description: Parents: Maximum Length: |
certificateStore |
Description:
A certificate store can be a system store or a user's store. Initially, the provider attempts to load the certificate from the system store. If it fails, it loads the certificate from the user store. Parents: Maximum Length: |
codePage |
Description: By default, the provider assumes that incoming HTTP is encoded as UTF-8. If it is, the provider automatically converts the HTTP to Unicode. If the incoming stream is not UTF-8, you will have faster performance if you specify the codePage value (for example, "932" for Japanese). Alternately, you can set the provider to scan for the code page (codePageAutoDetect = 1), but this will slow down performance. If the auto-detect is used, you can still specify a codePage value as a backup in case the auto-detect fails. Parent: |
codePageAutoDetect |
Description: 0 (default): The provider does not automatically detect the code page. By default, the provider assumes that incoming HTTP is encoded as UTF-8. If it is, the provider automatically converts the HTTP to Unicode, and there is no need to specify a value for codePageAutoDetect. If the incoming stream is not UTF-8, you can set the provider to scan for the code page (codePageAutoDetect = 1), but note that this will slow down performance. You will have better performance if you specify the code page (for example, for Japanese, set codePage to "932"). If the auto-detect fails, the provider looks for a codePage value; if it does not find one, it converts the HTTP to UTF-8, then to Unicode. Parent: |
command |
Description: Parent: |
connectionExclusionInterval |
Description: Whenever the provider cannot successfully send requests to a server, it immediately places the server on a bad server list and returns an error to indicate that the remote service is currently unavailable. At periodic intervals (for example, every 50000 milliseconds), the provider re-attempts the connection. This option mimimizes unnecessary resource consumption of network bandwidth, CPU cycles, and other system resources during a failure. It also enables the provider to generate a more immediate error to alert the caller that the server is not available. If no value is specified in the request for connectionExclusionInterval, the provider uses the value for the ConnectionExclusionInterval registry key, defined in \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Provisioning\Providers\MPFSoapProv. Note: The provider lists a server only for the Provisioning Engines [HMC SDK] that executes the provider. Other engines will not list the server unless they also fail to execute requests against it. Parents: |
cookie |
Description: Parent: Maximum Length: |
executeData |
Description: Children: |
getCookies |
Description:
Whenever the value of a child cookie node in the request matches the name of a cookie in the HTTP response, the provider resets the cookie node to match the returned value. Parent: Child: |
httpHeaders |
Description: Parents: Child: |
ignoreRedirect |
Description: Parent: |
isXML |
Description: If this element is not specified, the provider loads the body into an XML DOM so it can determine whether the body is XML and apply the appropriate Content-Type header to the HTTP request. This process consumes more cycles than necessary. If you specifically include this element, the DOM load is bypassed, which improves performance. Parent: |
queryString |
Description: There are two ways to pass parameters: as a single string in the queryString node or as param nodes of the queryStringParams node. Use the first style to pass an existing query string. Use the second style if you want the provider to build the query string for you from other input parameters when it sends the HTTP request. The following sample code illustrates both styles:
For the latter, the provider combines the param names and values into a queryString with a value of "uid=Bill&pwd=foo". When the provider sends the request, it appends the queryString value to the url for the receiving server. For example: If the url for the receiving server is https://www.tailspintoys.com ?lcid=1033 and queryString is "uid=Bill&pwd=foo", the combined value is "https://www.tailspintoys.com ?lcid=1033&uid=Bill&pwd=foo". Parents: |
queryStringParams |
Description: There are two ways to pass parameters: as a single string in the queryString node or as param nodes of the queryStringParams node. Use the first style to pass an existing query string. Use the second style if you want the provider to build the query string for you from other input parameters when it sends the HTTP request. The following sample code illustrates both styles:
For the latter, the provider combines the param names and values into a queryString with a value of "uid=Bill&pwd=foo". When the provider sends the request, it appends the queryString value to the url for the receiving server. For example: If the url for the receiving server is https://www.tailspintoys.com .com?lcid=1033 and queryString is "uid=Bill&pwd=foo", the combined value is "https://www.tailspintoys.com .com?lcid=1033&uid=Bill&pwd=foo". Parents: Child: |
param |
Description:
Parents: Attributes:
nameRequired. The name for the parameter.
valueRequired. The value for the parameter.
|
password |
Description: Parents: Maximum Length: |
receiveTimeout |
Description: The minimum value allowed is 1,000 and the maximum is 3,600,000. If a value outside this range is specified, the provider will fail with error c5000003. The default is 30,000. Parents: |
requestInfo |
Description: Parent: Children: |
result |
Description: Parent: |
retryTimes |
Description: Parents: |
rollbackInfo |
Description: Parent: Children: |
url |
Description: Parents: Maximum Length: |
userId |
Description: Parents: |
userName |
Description: Parents: Maximum Length: |
useTip |
Description:
Parent: |
Remarks
No remarks.
Schema Definition
Input
<executeData>1..1
<requestInfo>1..1
<useTip>0..1</useTip>
<isXML>0..1</isXML>
<url>1..1</url>
<queryString>0..1</queryString>
<queryStringParams>0..1
<param name=".." value="..">1..unbounded</param>
</queryStringParams>
<httpHeaders>
<param name=".." value="..">1..unbounded</param>
</httpHeaders>
<command>1..1</command>
<body>0..1</body>
<bodyParams>0..1</body>
<param name=".." value="..">1..unbounded</param>
<userName>0..1</userName>
<password>0..1</password>
<certificateName>0..1</certificateName>
<certificateStore>0..1</certificateStore>
<userId>0..1</userId>
<retryTimes>0..1</retryTimes>
<receiveTimeout>0..1</receiveTimeout>
<connectionExclusionInterval>0..1</connectionExclusionInterval>
<getCookies>0..1</getCookies>
<cookie>0..unbounded</cookie>
<ignoreRedirect>0..1</ignoreRedirect>
<codePageAutoDetect>0..1</codePageAutoDetect>
<codePage>0..1</codePage>
</requestInfo>
<rollbackInfo>0..1
<url>1..1</url>
<queryString>0..1</queryString>
<queryStringParams>0..1
<param name=".." value="..">1..unbounded</param>
</queryStringParams>
<httpHeaders>
<param name=".." value="..">1..unbounded</param>
</httpHeaders>
<command>1..1</command>
<body>0..1</body>
<bodyParams>0..1</body>
<param name=".." value="..">1..unbounded</param>
<userName>0..1</userName>
<password>0..1</password>
<certificateName>0..1</certificateName>
<certificateStore>0..1</certificateStore>
<userId>0..1</userId>
<retryTimes>0..1</retryTimes>
<receiveTimeout>0..1</receiveTimeout>
<connectionExclusionInterval>0..1</connectionExclusionInterval>
</rollbackInfo>
<result>0..1</result>
</executeData>
Output
<executeData>1..1
<requestInfo>1..1</requestInfo>
<getCookies>0..1</getCookies>
<cookie>0..unbounded</cookie>
</requestInfo>
<result>0..1</result>
</executeData>
Sample Code
Example XML Request
The following code fragment shows the format for sending data to this procedure. For more information on individual elements and attributes, see the Elements and Attributes table.
Example XML Response
The following code fragment shows the format for data this procedure returns. For more information on individual elements and attributes, see the Elements and Attributes table.
Applies To
Hosted Messaging and Collaboration version 4.5
Hosted Messaging and Collaboration version 4.0
Hosted Messaging and Collaboration version 3.5
Hosted Messaging and Collaboration version 3.0
Windows-based Hosting version 4.5
Windows-based Hosting version 4.0
Windows-based Hosting version 3.5
Windows-based Hosting for Applications version 1.0