ios - 如何判断 TWRequest PerformRequestWithHandler 失败还是成功

标签 ios twitter twrequest

我正在发布请求并检查错误,如下所示:

// 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 照片应用程序发布照片,但它向我发送了一条警告,内容为“推文可能未成功”。这很有趣,因为这基本上是我在这种情况下唯一的选择。这让我觉得,即使是苹果公司也不得不承认,当返回未确认时,没有办法确定帖子失败。

最佳答案

根据研究此问题时发现的每个示例,除了您正在使用的 API 之外,没有一个示例使用任何其他 API,包括 this example from twitter's own documentation将照片发布到 API 时,他们都不会先检查 urlResponse 代码。

似乎做过的最多的是this example from twitter's documentation其中执行 GET,然后处理响应。请注意,它首先检查responseData,如果存在,则将其简单地视为成功。仅当没有响应数据时,才会尝试查看错误。该示例不关心 urlResponse……我在 10 分钟的谷歌搜索中看到的任何其他示例也没有。

(最后,我怀疑这很重要,或者可能是因为您清理了显示的示例,但是当您没有执行任何 UI 时正在处理主队列上的错误。您可以立即在处理程序中进行处理,并将您所做的任何后处理传递到您尝试显示它的任何 UI。我怀疑在主队列中而不是处理程序的队列中对响应进行后处理(如这里引用的两个例子和我见过的所有其他例子中显示的)确实引起了一个问题,但我想知道它是否可以减少您所看到的假阴性的发生率。至少,它会让您做出回应响应的任何 UI 显示都更干净、更高效。)

关于ios - 如何判断 TWRequest PerformRequestWithHandler 失败还是成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101433/

相关文章:

ios - 单按不能与双按组合使用

ios - 在 iOS8 中使用 NSUrlSession 使用流请求进行后台上传

ios - 安装新pod后依赖分析错误

ios - UINavigationViewController 中的大量 SceneKit 场景需要很长时间才能解除分配

ios - Twitter Search Api 查找单词 'apple' iOS Swift 的提及

c# - 在 asp.net mvc Twitter OAuth2 登录后获取 oauth 凭据

iphone - 如何使用 iOS 5 的 iOS TWRequest 获取 Twitter 用户详细信息

ios - TWRequest iOS API 是否支持仅应用程序身份验证?

iphone - 如何使用 TWRequest 将地理定位附加到推文

python - 使用最新的 twitter api 和 python 检索多个用户对象