NSURLRequest没有发送?

时间:2013-02-28 16:44:33

标签: json nsurlconnection nsurlrequest

我有一个基于另一个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名称,我对它们都有同样的问题。

感谢任何提示或想法的人..

1 个答案:

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