0

我有一个 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 {
    }

我将 NSLog 检查添加到连接 didFailWithError、连接 didReceiveResponse 和 connectionDidReciveData 中,发现唯一发出的 NSURL 请求是我的 flighttrackJSONconnection 请求......

所以我想知道,我是否遗漏了代码中的某些内容,或者当它调用 connectionDidFinishLoading 时根本不可能发送另一个 NSURLRequest?

对不起,如果我看起来像个菜鸟,我只是有点困惑......

此外,所有 JSON 解析代码(至少对于 flighttrackJSONresponse 连接)和这些代码在 connectionDidFinishLoading 上都可以正常工作,所以它不像我在声明任何内容时犯了错误,如果有任何区别,我正在尝试在 connectionDidFinishLoading 上发送 2 个请求,他们每个人都有自己的 NSURLConnection 和 NSURLRequest 在.h上声明的名称,我对两者都有同样的问题。

感谢任何提示或想法家伙..

4

1 回答 1

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,检查需要做什么并在其中调用相同的方法!使用它,您不需要实现委托方法。

于 2013-02-28T16:53:07.117 回答