2013-02-28 2 views
0

У меня есть запрос JSON, который отправляется на сервер, на основании ответа другого запроса JSON, я использовал этот метод, чтобы проверить, что NSURL соединение используется для обработки ответа:NSURLRequest не отправляется?

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 { 
    } 

Однако на connectionDidFinishLoading для моего первого соединения (flighttrackJSONconnection), когда я использую этот код, запрос на 2-ой связь не посылается на все:

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 ...

Так что я задаюсь вопросом, я не пропустить что-то в мой код, или просто невозможно отправить другой NSURLRequest, когда он вызывает connectionDidFinishLoading?

Извините, если я, кажется, как нуб, я просто спутал немного ...

Кроме того, все разбора кода JSON (по крайней мере, для подключения flighttrackJSONresponse) и такие работы, штраф на connectionDidFinishLoading, поэтому его не так, как я сделал ошибку, объявив что-нибудь &, если это имеет значение, я пытаюсь отправить 2 запроса на connectionDidFinishLoading, каждый из которых имеет свои имена NSURLConnection и NSURLRequest, объявленные на .h, у меня такая же проблема с обоими ,

Спасибо за любые советы или идеи, ребята ..

+1

Вы отправляете второе соединение, основанное на параметре ответа fisrt json? – CainaSouza

+0

Да, я сделал, это может быть проблемой? –

+1

Я отправил ответ (как предложение). Проверьте это! – CainaSouza

ответ

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, проверьте, что нужно сделать, и назовите этот же метод внутри него! Используя это, вам не нужно реализовывать методы делегирования.

+0

Так что я бы использовал это вместо вызова (void) connectionDidFinishLoading? –

+1

Да, вместо '[NSURLConnection alloc] initWithRequest: flightTrackJSONconnectionrequest delegate: self];', используйте метод, который я написал до и внутри блока завершения, вызывают второе соединение в соответствии с тем, что вы анализируете от вас json. – CainaSouza

+0

Вот что я сделал: http://pastebin.com/0885RZtG спасибо за помощь, кстати. –

Смежные вопросы