2016-03-24 15 views
4

こんにちは、私は石鹸webserviceにリクエストを送信したいと思います。私はAFnetworkingで内部サーバエラー500を取得しようとしましたが、現在はnsurlconnectionで試していますが、ステータスコード400も表示しています。ありがとうアドバンスは私のコードです。iosでsoap webserviceへのリクエストを送信するには?

NSString *soapString = [NSString stringWithFormat: 
            @"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\"><soap12:Body><addBusOrder xmlns=\"http://tempuri.org/\"><UserUniqueID>ok//8FjcvEKWMeeJJZHKYA</UserUniqueID><PlatFormID>4</PlatFormID><DeviceID>E3D2FCF6-F41B-4275-BD34-FAA31307EFFE</DeviceID><RouteScheduleId>532875503</RouteScheduleId><JourneyDate>2016-03-25</JourneyDate><FromCityid>734</FromCityid><ToCityid>202</ToCityid><TyPickUpID>22860424</TyPickUpID><Contactinfo><Name>vinod</Name><Email>[email protected]</Email><Phoneno>7842768497</Phoneno><mobile>8801720427</mobile></Contactinfo><pass><passenger><passengerName>kumar</passengerName><Age>23</Age><Fare>1072</Fare><Gender>M</Gender><Seatno>D3</Seatno></passenger></pass></addBusOrder></soap:Body></soap:Envelope></addBusOrder></soap12:Body></soap12:Envelope>"]; 
      NSLog(@"soapString %@",soapString); 

    NSString *msgLength = [NSString stringWithFormat:@"%li", [soapString length]]; 

    NSString *queryString = [NSString stringWithFormat: @"https://asprel.in/Service/AppServices.asmx/addBusOrder"]; 

    NSURL *url = [NSURL URLWithString:queryString]; 

    NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url]; 

    [req addValue:@"application/soap+xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
    [req addValue:msgLength forHTTPHeaderField:@"Content-Length"]; 
    [req addValue:@"http://tempuri.org/addBusOrder" forHTTPHeaderField:@"SOAPAction"]; 
    [req setHTTPMethod:@"POST"]; 
    [req setHTTPBody: [soapString dataUsingEncoding:NSUTF8StringEncoding]]; 


    NSOperationQueue *queue = [[NSOperationQueue alloc]init]; 
    [NSURLConnection sendAsynchronousRequest:req queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 
     if (connectionError) { 
      NSLog(@"error %@",connectionError); 
     }else{ 
      NSLog(@"data %@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]); 
     } 


     NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data]; 
     [parser parse]; 

    }]; 
} 

エラー:

status code: 500, headers { 
    "Access-Control-Allow-Origin" = "*"; 
    "Cache-Control" = private; 
    "Content-Length" = 322; 
    "Content-Type" = "text/plain; charset=utf-8"; 
    Date = "Thu, 24 Mar 2016 07:08:32 GMT"; 
    Etag = "\"\""; 
    Server = "Microsoft-IIS/8.0"; 
    "X-AspNet-Version" = "4.0.30319"; 

答えて

1

あなたはAPIの認証

を必要とする認証に

// Create the request 
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10]; 

// New Create the connection 
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; 

NSURLSession *session = [NSURLSession sharedSession];//sessionWithConfiguration:defaultConfigObject delegate:self delegateQueue:[NSOperationQueue mainQueue]]; 

// NSURLCredential *creds = [NSURLCredential credentialWithUser:self.username password:self.password persistence:NSURLCredentialPersistenceForSession]; 

NSString *authStr = [NSString stringWithFormat:@"%@:%@",username API,password API];// @"username:password"; 

NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding]; 

NSString *authValue = [NSString stringWithFormat: @"Basic %@",[authData base64EncodedStringWithOptions:0]]; 

// Part Important 
[request setValue:authValue forHTTPHeaderField:@"Authorization"]; 

[request addValue:@"application/soap+xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request addValue:msgLength forHTTPHeaderField:@"Content-Length"]; 
[request addValue:@"http://tempuri.org/addBusOrder" forHTTPHeaderField:@"SOAPAction"]; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPBody: [soapString dataUsingEncoding:NSUTF8StringEncoding]]; 

NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request  
    completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 

       NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data]; 
       [parser parse]; 

       NSLog(@"%@",responseData); 
        if (error) { 
         [self handleError: error]; 
        } 
}]; 

[dataTask resume]; 

NSLog(@"Header Request--->> %@",request.allHTTPHeaderFields); 
を追加してみてください
関連する問題