简体   繁体   中英

How to send request to soap webservice in ios?

hi i want to send request to the soap webservice. I tried in AFnetworking and getting internal server error 500 and now iam trying in nsurlconnection but it also showing status code 400. Please any one help me. Thank you Advance hear is My code.

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>katragadda.vinod@gmail.com</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];

    }];
}

Error:

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

You need the API Authorization

try add Authorization

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM