在iPhone应用程序中调用Web服务?

时间:2011-11-15 08:29:35

标签: objective-c web-services ios4 nsurlconnection nsurlrequest

我正在使用soap webservice。

因为我正在呼唤一个网络方法。如果我从我的代码的一部分调用工作正常并成功调用服务并成功恢复数据。

但是如果我从同一个类的代码的另一部分调用相同的方法没有响应并且没有从服务获取任何数据。为什么会这样,任何人都可以帮助我。

提前致谢

详细介绍.m

-(void) downloadAndParse:(NSMutableURLRequest *)sentReq  {

    conn =  [[NSURLConnection alloc] initWithRequest:sentReq delegate:self];

    if (conn) {
        webData = [[NSMutableData data] retain];
    }
}

-(void)fullBarcodeSearch:(NSString *)code {

    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
    URLRequest *r  = [[URLRequest alloc] init];

    NSMutableURLRequest *req = [r fullBarcodeSearch:code];
    [r release];
    [self downloadAndParse:req];

}

在URLRequest.m

-(NSMutableURLRequest *) addHeaderToSoapXML:(NSString *) soapMsg {



    NSURL *url = [NSURL URLWithString:str];

    NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
    NSString *msgLength = [NSString stringWithFormat:@"%d",[soapMsg length]];
    [req addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"content-type"];
    [req addValue:msgLength forHTTPHeaderField:@"Content-Length"];
    [req setHTTPMethod:@"POST"];
    [req setHTTPBody:[soapMsg dataUsingEncoding:NSUTF8StringEncoding]];
    return req;
}

如果没有调用服务,那么我会收到这样的错误

* oid _WebThreadLockFromAnyThread(bool),0x6958130:从主线程或Web线程以外的线程获取Web锁。不应该从辅助线程调用UIKit。*

请任何人帮助我

提前致谢

1 个答案:

答案 0 :(得分:0)

您需要NSURLConnection来执行NSURLRequest。在课堂上查找Apple Docs。 类似的东西:

[urlConnection sendSynchronousRequest:urlRequest returningResponse: &urlResponse error:&error]