Ios 在连接开始之前设置标志
在viewDidLoad中,我想多次调用webservice。 因此,我在viewDidLoad中的代码如下Ios 在连接开始之前设置标志,ios,objective-c,Ios,Objective C,在viewDidLoad中,我想多次调用webservice。 因此,我在viewDidLoad中的代码如下 //Webservice call for industry list NSURL *aUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@index.php/industry/industrylist",baseurl]]; NSMutableURLRequest *request = [NSMutableURLReque
//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
,因为我在上面代码中最后一行的前一行为该标志分配了字符串。我知道我把旗子摆错了方向。所以,请让我知道如何在这里设置标志。基本上,我想在connectiondFinishLoading
方法中使用这些标志。
我必须根据webservice调用来区分webservice响应数据。
请帮我解决这个问题。我认为您可以使用
连接.currentRequest.URL
来区分请求
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *strUrl = [connection.currentRequest.URL absoluteString] ;
// compare to the url of your request to distinguish them
}
这里有几种方法(都不涉及标志) 最简单的方法通常是使用
[NSURLConnection sendAsynchronousRequest:queue:completionHandler]
。然后,您可以将您的connectiondFinishLoading
代码放在这里,特定于每个请求
如果您需要更高级的nsurlconnectionelegate
(如响应身份验证请求)功能,则此功能不起作用。在这种情况下,我通常建议您将连接和委托包装到一个单独的对象中,并为每个连接实例化一个对象。这样,每个对象都只是单个连接的代理
在少数情况下,这仍然是不合适的,在这些情况下,您可以在委托中检查连接的请求(connection.currentRequest
),以确定调用您的是哪一个。在某些情况下,我已经创建了一个可变字典属性映射NSURLRequest
信息到处理程序中需要的其他元数据
在最奇特(因此使用频率最低)的情况下,您可以使用objc\u setAssociatedObject
将元数据(如标识符)附加到连接上,但这很少是必需的
但我要看一下[NSURLConnection sendAsynchronousRequest:queue:completionHandler]
。它是最简单的使用方法,可以轻松地解决最常见的情况