2016-05-02 5 views
0

リクエストはNSURLSessionを使用してどのように実行できますか? SOAPのリクエストフォーマットをご覧ください。NSURLSessionを使用したSOAPリクエストObjective CまたはSWIFT

<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> 

+0

[この](HTTPを参照してください。 stackoverflow.com/questions/26964845/how-to-connect-to-a-web-service-using-nsurlsession-with-デリゲートメソッド)リンク。お役に立てれば。 –

答えて

0

私はそれが正常に動作目的C.を使用してNSURLSessionの実装の下にやった:

-(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); 
} 
} 
関連する問題