SOAP request using NSURLSession Objective C or SWIFT

谁说胖子不能爱 提交于 2019-12-12 01:36:57

问题


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:


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);
 }
}


来源:https://stackoverflow.com/questions/36982981/soap-request-using-nsurlsession-objective-c-or-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!