9

HTTP Post メソッドを使用して、同期要求を開始しています。[NSURLConnection sendSynchronousRequest: ..]

HTTP POST リクエストの場合、多くのスレッドで議論されているように、デフォルトのタイムアウトは 75 秒で発生します。

しかし、その 75 秒のタイムアウト期間中に、すべて同じパラメーターで発生した同じ要求に対して、複数の Web サービス要求が開始されます。

この複数のリクエストが開始される原因は何ですか? これは一般的に HTTP POST によるものですか、それとも同期リクエストによるものですか?

@iOS サンプルコード

[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
[request addValue:[NSString stringWithFormat:@"%d", body.length] forHTTPHeaderField: @"Content-Length"];

 [[NSURLCache sharedURLCache] setDiskCapacity:0];
 [[NSURLCache sharedURLCache] setMemoryCapacity:0];

 NSURLResponse *response;
 response = nil;

 urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];              
 if(urlData)
 {
        NSString *responseString = [[NSString alloc] initWithData:urlData encoding:NSASCIIStringEncoding];
        [self parseStringInformation:responseString infoDict:informationDictionary];
        //NSLog(@"%@",responseString);
 }
4

1 に答える 1

1

サーバーの要求応答ログがなければ、いくつかの可能性があります。

プログラマーのエラー: 「落とし穴」タイプの状況をすべて経験しましたか?

  • 「urlData = [NSURLConnection sendSynchronousRequest: ...」行の直前にロギング メッセージを配置して、コードが 1 回だけ呼び出していることを確認しましたか?

  • メインの GUI スレッド内からこの関数を呼び出していますか? サポートされていない/推奨されていない場合は、説明しているような副作用が発生する可能性があります。https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference.html

  • リクエストが POST として設定されていて、「Content-type: multipart/form-data,boundary=X」のような適切なヘッダーがあることを確認していますか?

Web サーバーの応答: Web サーバーのログ (または POST 先のサービスのコード) がなければ、なんとも言えません...

API エラー: 望ましくない副作用を引き起こしているまれなケースが見つかりました。おそらく、アップルにはバグトラッカーや開発者サポートフォーラムがありますか?

于 2012-11-19T20:06:23.713 に答える