Sample code for 30+ languages & platforms
Objective-C

HTTP SOAP 1.2 Request and Response using POST

See more HTTP Examples

Demonstrates a working SOAP 1.2 request and response using POST with a live server. You may try running this example with the URLs and data provided. See http://wsf.cdyne.com/WeatherWS/Weather.asmx?op=GetCityWeatherByZIP for details.

Note: This example is correct in theory, but no longer works for live testing because the SOAP service provider (cdyne.com) has made changes or discontinued the free service.

Chilkat Objective-C Downloads

Objective-C
#import <CkoHttp.h>
#import <CkoXml.h>
#import <CkoHttpRequest.h>
#import <CkoHttpResponse.h>

BOOL success = NO;

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

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

CkoHttp *http = [[CkoHttp alloc] init];

CkoXml *soapXml = [[CkoXml alloc] init];

soapXml.Tag = @"soap12:Envelope";
success = [soapXml AddAttribute: @"xmlns:xsi" value: @"http://www.w3.org/2001/XMLSchema-instance"];
success = [soapXml AddAttribute: @"xmlns:xsd" value: @"http://www.w3.org/2001/XMLSchema"];
success = [soapXml AddAttribute: @"xmlns:soap12" value: @"http://www.w3.org/2003/05/soap-envelope"];

[soapXml NewChild2: @"soap12:Body" content: @""];
success = [soapXml GetChild2: [NSNumber numberWithInt: 0]];
[soapXml NewChild2: @"GetCityWeatherByZIP" content: @""];
success = [soapXml GetChild2: [NSNumber numberWithInt: 0]];
success = [soapXml AddAttribute: @"xmlns" value: @"http://ws.cdyne.com/WeatherWS/"];
[soapXml NewChild2: @"ZIP" content: @"60187"];
[soapXml GetRoot2];

NSLog(@"%@",[soapXml GetXml]);

CkoHttpRequest *req = [[CkoHttpRequest alloc] init];
req.HttpVerb = @"POST";
req.SendCharset = NO;
[req AddHeader: @"Content-Type" value: @"application/soap+xml; charset=utf-8"];
[req AddHeader: @"SOAPAction" value: @"http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP"];
req.Path = @"/WeatherWS/Weather.asmx";
success = [req LoadBodyFromString: [soapXml GetXml] charset: @"utf-8"];

http.FollowRedirects = YES;

CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpSReq: @"wsf.cdyne.com" port: [NSNumber numberWithInt: 80] ssl: NO request: req response: resp];
if (success == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

CkoXml *xmlResponse = [[CkoXml alloc] init];
success = [xmlResponse LoadXml: resp.BodyStr];
NSLog(@"%@",[xmlResponse GetXml]);