Sample code for 30+ languages & platforms
C#

Simple SOAP Request

See more HTTP Examples

Demonstrates how to send a simple SOAP request.

Chilkat C# Downloads

C#
bool success = false;

//  --------------------------------------------------------------------------------
//  Also see Chilkat's Online WSDL Code Generator
//  to generate code and SOAP Request and Response XML for each operation in a WSDL.
//  --------------------------------------------------------------------------------

//  Create the following XML to be sent in the SOAP request body.

//  <soapenv:Envelope xmlns:dat="http://www.dataaccess.com/webservicesserver/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
//      <soapenv:Header/>
//      <soapenv:Body>
//          <dat:NumberToDollars>
//              <dat:dNum>99.0</dat:dNum>
//          </dat:NumberToDollars>
//      </soapenv:Body>
//  </soapenv:Envelope>

Chilkat.Xml xml = new Chilkat.Xml();
xml.Tag = "soapenv:Envelope";
xml.AddAttribute("xmlns:dat","http://www.dataaccess.com/webservicesserver/");
xml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/");
xml.UpdateChildContent("soapenv:Header","");
xml.UpdateChildContent("soapenv:Body|dat:NumberToDollars|dat:dNum","99.0");

//  In a SOAP HTTP request, including the XML declaration (<?xml version="1.0" encoding="UTF-8"?>) in the XML body is generally not required. 
xml.EmitXmlDecl = false;
string soapRequestBody = xml.GetXml();

string endpoint = "https://www.dataaccess.com/webservicesserver/numberconversion.wso";
string soapAction = "";
//   For SOAP requests, the standard Content-Type is usually set to "text/xml" or "application/soap+xml"
string contentType = "text/xml";

Chilkat.Http http = new Chilkat.Http();

http.ClearHeaders();
http.SetRequestHeader("SOAPAction",soapAction);

Chilkat.HttpResponse resp = new Chilkat.HttpResponse();
success = http.HttpStr("POST",endpoint,soapRequestBody,"utf-8",contentType,resp);
if (success == false) {
    Debug.WriteLine(http.LastErrorText);
    return;
}

//  Get the XML response body.
Chilkat.Xml responseXml = new Chilkat.Xml();
resp.GetBodyXml(responseXml);

int statusCode = resp.StatusCode;
Debug.WriteLine("response status code: " + Convert.ToString(statusCode));

//  If the status code does not indicate succcess, then show the response XML,
//  which probably contains error information.
if (statusCode != 200) {
    Debug.WriteLine(responseXml.GetXml());
    return;
}

Debug.WriteLine(responseXml.GetXml());

//  Parse the successful SOAP response XML.

//  This is a sample of the response XML, but the namespace prefixes will be different.
//  We can parse the result using "*" for the namespace prefixes (see below).

//  <soapenv:Envelope xmlns:dat="http://www.dataaccess.com/webservicesserver/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
//      <soapenv:Header/>
//      <soapenv:Body>
//          <dat:NumberToDollarsResponse>
//              <dat:NumberToDollarsResult>string</dat:NumberToDollarsResult>
//          </dat:NumberToDollarsResponse>
//      </soapenv:Body>
//  </soapenv:Envelope>

string dat_NumberToDollarsResult = responseXml.GetChildContent("*:Body|*:NumberToDollarsResponse|*:NumberToDollarsResult");
Debug.WriteLine("result: " + dat_NumberToDollarsResult);