2

私はリクエストを投稿し、次のようなエラーをチェックしています:

// Send request out on a background thread
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
    [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
        if ([urlResponse statusCode] == 200) {
            NSLog(@"Tweet Successful");
        }else {
            NSLog(@"Tweet Failed");
            if (responseData) {
                //  Use the NSJSONSerialization class to parse the returned JSON
                NSError *jsonError;
                NSArray *requestResponse =
                [NSJSONSerialization JSONObjectWithData:responseData
                                                options:NSJSONReadingMutableLeaves
                                                  error:&jsonError];

                if (requestResponse) {
                    NSLog(@"%@",requestResponse);
                } else {
                    NSLog(@"%@",jsonError);
                }
            }
        }
    }];
});

リクエストに関する限り、うまく機能しているようです。私の意図は、失敗時にリクエストをキューに入れ、後日再試行するか、エラーとこれまでに失敗した試行の数に依存しないことでした. 私が抱えている問題は、実際にはリクエストが成功し、意図したとおりに投稿され、Twitter ストリームで 1 日として明確に表示されるエラー 34「ページが見つかりません」で、頻繁に失敗するように見えることです。

ここで、返されたエラー コードを信頼できない場合、実際に続行して再試行を続けることはできません。成功か失敗かを確実に知るにはどうすればよいですか?

最近の観察:

最近、Appleの写真アプリから直接写真を投稿しようとしたところ、「ツイートに失敗した可能性があります」という警告が表示されました。この場合、基本的にそれが私の唯一の選択肢として来ていたので、それは面白いです. これは、返品が確認されない場合、投稿が失敗したことを確実に伝える方法がないことをAppleでさえ認めなければならなかったと思います.

4

1 に答える 1

2

この問題の調査で見つかったすべての例によると、使用しているもの以外の API を使用するものはなく、写真を API に投稿するための Twitter 独自のドキュメントからのこの例を含めて、最初に urlResponse コードをチェックするものはありません。

これまでに行われたと思われる最も多くの例は、GET が実行されてから応答が処理されるtwitter のドキュメントからのこの例です。最初に responseData をチェックし、存在する場合は単に成功として扱われることに注意してください。responseData がない場合にのみ、わざわざエラーを調べようとします。この例は urlResponse を気にしません…そして、10 分間のグーグルで見た他の例も気にしません。

最後に、これが問題になるとは思いません。または、表示の例をクリーンアップしたためかもしれませんが、UIを実行していないときにメインキューでエラーを処理しています。ハンドラーで処理を行うことができますハンドラーのキューとは対照的に、メインキューで応答を後処理することは疑わしいです(ここで引用されている両方の例に示されているように)および私が見た他のすべての例) は実際に問題を引き起こしています, しかし、それはあなたが見ている偽陰性の発生率を減らすのではないかと思います. 少なくとも, それはあなたの応答と応答のUI表示を作成します.よりクリーンで効率的です。

于 2012-09-27T22:16:46.600 に答える