0

How i can perform SOAP request using NSURLSession? Please find request format for SOAP.

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pm="http://sampleurl.com/webservices/pm">
 <soapenv:Header/>
 <soapenv:Body>
  <pm:start>
     <username>awdmmappadmin1</username>
     <password>password</password>
     <completedDate>2016-04-25T13:37:34.699Z</completedDate>
     <gameMinutes>2</gameMinutes>
     <gameMoves>14</gameMoves>
     <gameSeconds>33</gameSeconds>
     <gameTimeSec>153</gameTimeSec>
     <guestId>2016</guestId>
  </pm:start>

1
  • Refer this link. Hope this helps. Commented May 2, 2016 at 12:57

1 Answer 1

0

I did below implementation for NSURLSession using Objective C. It works fine :

-(void)startSoapRequest{

NSString *soapMessage =
@"<soapenv:Envelopexmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:pm=\"http://appiancorp.com/webservices/pm\">\n<soapenv:Header/>\n<soapenv:Body>\n<pm:start>\n<username>awdmmappadmin1</username>\n<password>password</password>\n<completedDate>2016-04-25T13:37:34.699Z</completedDate>\n<gameMinutes>2</gameMinutes>\n<gameMoves>14</gameMoves>\n<gameSeconds>33</gameSeconds>\n<gameTimeSec>153</gameTimeSec>\n<guestId>2016</guestId>\n</pm:start>\n</soapenv:Body>\n</soapenv:Envelope>";

NSURL *url = [NSURL URLWithString:@"http://sampleurl.com/suite/webservice/processmodel/sample"];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
NSString *msgLength = [NSString stringWithFormat:@"%lu", (unsigned long)[soapMessage length]];

[theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];

 NSURLSession *soapSession = [NSURLSession sessionWithConfiguration:   [NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];
NSURLSessionDataTask *dataTask = [soapSession dataTaskWithURL: url];
self.responseData = [[NSMutableData alloc]init];
 [dataTask resume];
}

NSURLSessionTaskDelegate :

 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data
 {
   //handle data here
   [self.responseData appendData:data];

 }


- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
 {
//Called when the data transfer is complete
//Client side errors are indicated with the error parameter

if (error) {

    NSLog(@"%@ failed: %@", task.originalRequest.URL, error);

}else{

    NSLog(@"DONE. Received Bytes: %lu", (unsigned long)[self.responseData length]);

    NSString *theXML = [[NSString alloc] initWithBytes:
                        [self.responseData bytes] length:[self.responseData length] encoding:NSUTF8StringEncoding];
    NSLog(@"%@",theXML);
 }
}
Sign up to request clarification or add additional context in comments.

1 Comment

This is REST request not POST

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.