我有一个基于另一个JSON请求的响应发送到服务器的JSON请求,我使用此方法检查用于处理响应的NSURL连接:
if(connection == connection1) {
// Connection 1
} else if(connection == connection2) {
// Connection 2
}
它适用于第一个连接,发送方式如下:
NSString *jsonStr = [NSString stringWithFormat:@"https://api.flightstats.com/flex/flightstatus/rest/v2/json/flight/status/%@/%@/dep/%@?appId=%@&appKey=%@&utc=false",airline.text,flightnumber.text,datestring,flightAPIIDstring,flightAPIkeystring];
NSURL *jsonurl = [NSURL URLWithString:jsonStr];
flightTrackJSONconnectionrequest = [NSURLRequest requestWithURL:jsonurl];
flighttrackJSONconnection =[[NSURLConnection alloc]
initWithRequest:flightTrackJSONconnectionrequest delegate:self];
if(flighttrackJSONconnection){
jsonresponse = [[NSMutableData alloc] init];
} else {
}
但是,在我的第一个连接(flighttrackJSONconnection)的connectionDidFinishLoading上,当我使用这个代码时,第二个连接的请求根本没有发送出去:
NSString *departjsonStr = [NSString stringWithFormat:@"https://api.flightstats.com/flex/airports/rest/v1/json/iata/%@?appId=%@&appKey=%@",DepartACode,flightAPIIDstring,flightAPIkeystring];
NSURL *departjsonurl = [NSURL URLWithString:departjsonStr];
departairportcheckJSONconnection = [NSURLRequest requestWithURL:departjsonurl];
departairportcheckJSONconnection =[[NSURLConnection alloc]
initWithRequest:departairportcheckJSONconnectionrequest delegate:self];
if(departairportcheckJSONconnection){
departairportlookup = [[NSMutableData alloc] init];
} else {
}
我在连接didFailWithError,连接didReceiveResponse和connectionDidReciveData all中添加了NSLog检查,发现唯一的NSURL请求是我的flighttrackJSONconnection请求......
所以我想知道,我在代码中遗漏了什么,或者在调用connectionDidFinishLoading时是否根本无法发送另一个NSURLRequest?
对不起,如果我看起来像个菜鸟,我只是有点困惑......
此外,所有JSON解析代码(至少对于flighttrackJSONresponse连接)等都可以在connectionDidFinishLoading上正常工作,所以它不像我犯了一个错误声明任何东西&如果它有任何区别,我试图在connectionDidFinishLoading上发送2个请求,每个请求都有自己的NSURLConnection和.h上声明的NSURLRequest名称,我对它们都有同样的问题。
感谢任何提示或想法的人..
答案 0 :(得分:1)
我建议使用方法sendAsynchronousConnection
,如下代码:
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
// Treat your response here
}];
在块中,您可以对待您的回复。解析你的JSON,检查需要做什么,并在其中调用相同的方法!使用它,您不需要实现委托方法。