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で、このコードを使用すると、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リクエストのみであることを確認しました...

だから私は疑問に思っています、私は私のコードで何かを見逃しましたか、それともconnectionDidFinishLoadingを呼び出すときに別のNSURLRequestを送信することは単に不可能ですか?

初心者のように思えたらごめんなさい、ちょっと混乱しています...

また、すべてのJSON解析コード(少なくともflighttrackJSONresponse接続の場合)などはconnectionDidFinishLoadingで正常に機能するため、何かを宣言するのを間違えたわけではなく、違いが生じた場合は、connectionDidFinishLoadingで2つのリクエストを送信しようとしています。 、.hで宣言された独自のNSURLConnectionおよびNSURLRequest名を持つそれらのそれぞれ、私は両方で同じ問題を抱えています。

ヒントやアイデアをありがとう。

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 に答える