【发布时间】:2012-08-19 13:08:36
【问题描述】:
我正在发布请求并检查如下错误:
// 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);
}
}
}
}];
});
就请求而言,它似乎工作正常。我的意图是将失败的请求排队并在以后重试,或者不取决于错误以及到目前为止失败的尝试次数。 我遇到的问题是,我发现它经常出现失败,错误 34“未找到页面”实际上请求确实成功,按预期发布,并且可以在 Twitter 流中清晰地看到。
现在,如果我不能相信返回的错误代码,那么我真的无法继续重试。我如何确定它是成功还是失败?
近期观察:
最近,我尝试直接从 Apple 照片应用发布一张照片,它向我发送了一条警告,上面写着“Tweet 可能没有成功”。这很有趣,因为这基本上是我在这种情况下唯一的选择。这让我觉得即使是 Apple 也不得不承认,当退货未确认时,无法确定帖子是否失败。
【问题讨论】:
-
实际日志打印输出为:errors = ( { code = 34; message = "对不起,该页面不存在"; }
-
您还应该分享您在此处执行的示例 URL 吗?
-
传递给块的 NSError *error 怎么样?
-
@defactodeity - 构建上面的 TWRequest 并且不显示,因为它似乎不相关。请求很少失败,推文是成功的。我的问题是,有时响应表明失败,即使它确实成功了。
-
@Moxy - 我没有检查 NSError,不确定它是否返回任何内容,因为帖子确实成功了。我没有在 URLResponse 中读取 200,因此测试响应数据并获取上面的消息。