在viewDidLoad中我想多次调用webservice。 所以我在viewDidLoad中的代码如下
//Webservice call for industry list
NSURL *aUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@index.php/industry/industrylist",baseurl]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:aUrl
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[@"emailid=b@b.com&password=1234" dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *connection= [[NSURLConnection alloc] initWithRequest:request delegate:self];
//set flag for industryList
flag = @"industry";
[connection start];
//Webservice call for function list
NSURL *bUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@index.php/functionmdl/allFunctionlist",baseurl]];
NSMutableURLRequest *requestb = [NSMutableURLRequest requestWithURL:bUrl
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[requestb setHTTPMethod:@"POST"];
[requestb setHTTPBody:[@"" dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *connectionb = [[NSURLConnection alloc] initWithRequest:requestb delegate:self];
//set flag for industryList
flag = @"functionmdl";
[connectionb start];
但是flag
的值始终设置为functionmdl
,因为我已经在上面代码的最后一行的前一行分配了带字符串的标志。我知道我正以错误的方式设置旗帜。那么,请告诉我如何在这里设置标志。基本上我想在connectionDidFinishLoading
方法中使用这些标志。
我必须根据webservice调用区分webservice响应数据。
请帮我解决这个问题。
答案 0 :(得分:1)
我认为您可以使用connection.currentRequest.URL
来区分请求。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *strUrl = [connection.currentRequest.URL absoluteString] ;
// compare to the url of your request to distinguish them
}
答案 1 :(得分:0)
这里有几种方法(没有涉及标志)。
最简单的方法通常是使用[NSURLConnection sendAsynchronousRequest:queue:completionHandler]
。然后,您可以将connectionDidFinishLoading
代码放在此处,具体针对每个请求。
如果您需要NSURLConnectionDelegate
的更多高级功能(如响应身份验证请求),那么这不起作用。在这种情况下,我通常建议您将连接和委托包装到一个单独的对象中,并为每个连接实例化一个。这样,每个对象只是一个连接的委托。
在少数情况下,这仍然不合适,在这种情况下,您可以在委托(connection.currentRequest
)中检查连接的请求,以确定您正在调用哪一个。在某些情况下,我创建了一个可变字典属性,将NSURLRequest
信息映射到处理程序中我想要的其他元数据。
在最花哨的(因此也是最常用的)情况下,您可以使用objc_setAssociatedObject
将元数据(例如标识符)附加到您的连接,但这很少是必需的。
但我会看[NSURLConnection sendAsynchronousRequest:queue:completionHandler]
。它是最简单的使用方式,可以轻松解决最常见的情况。