我正在发布一个请求,并检查这样的错误:
// 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流中看到清晰的一天。
现在,如果我不能信任返回的错误代码,那么我就不能继续并继续重试。我如何确定它是成功还是失败?
最近的意见:
最近,我试图直接发布一张来自苹果照片应用程序的照片,它给我发了一个警告,上面写着"Tweet可能没有成功“。这很有趣,因为在这种情况下,这基本上是我唯一的选择。这让我觉得,即使是苹果也不得不承认,当回复没有证实时,没有办法确定帖子失败了。
发布于 2012-09-27 22:16:46
根据在研究这个问题时发现的每一个例子,除了您正在使用的API之外,所有这些API都没有使用任何其他API,并包括将照片发布到API中的这个例子来自twitter自己的文档,它们中没有人首先检查urlResponse代码。
似乎做的最多的是这个例子来自twitter的文档,在这里执行GET,然后处理响应。请注意,它首先检查responseData,如果它存在,则简单地将其视为成功。只有在没有responseData的情况下,才会有麻烦地查看错误。该示例不需要使用urlResponse…。我在10分钟的谷歌搜索中也没有看到任何其他的例子。
(最后,我怀疑这是否重要,或者可能是因为您清理了显示的示例,但是在不执行任何UI时,您正在处理主队列上的错误。您可以立即在处理程序中进行处理,并将所做的任何后处理传递给任何试图用它显示的UI。我怀疑后处理主队列中的响应,而不是处理处理程序的队列(在这里引用的两个例子和我看到的所有其他示例中都显示了这一点)是否真的会造成问题,但我想知道它是否可以减少您所看到的错误否定的发生率。至少,它将使您的响应和响应的任何UI显示更加干净和高效。)
https://stackoverflow.com/questions/12101433
复制相似问题