0

First edit (more details)

  • 我在 Firefox 中使用 Modify Headers 插件并访问了该页面(http://api.wunderlist.com/me/tasks),这显示了我需要的完整且正确的 json 字符串。它永远不会失败(超过 25 次测试)
  • 我尝试使用 file_get_contents,但 file_get_contents 也减少了响应。在各个点。
  • cURL 做同样的事情,在各个点减少响应 json。看起来“随意”

Original post

我在这里遇到一个奇怪的问题。我为 Wunderlist2 ( http://www.wunderlist.com ) 创建了一个 PHP Wrapper,可以在这里找到:https ://github.com/PENDOnl/Wunderlist2-PHP-Wrapper

它运行良好,直到我被用户通知该课程突然停止工作。由于我创建了一个免费服务 ( http://wcal.me ) 来为 Wunderlist 用户提供日历提要,因此我决定查看该脚本,因为这是调试脚本的最简单方法。

登录到 Wunderlist 并获取 authtoken 作品,类中的所有其他功能似乎也可以找到(获取“我”、“我/列表”等)但是,如果是 getTasks 功能(“我/任务” ) 我得到的响应不完整,它只是停在一个 json 字符串的中间。因此,该json_decode函数返回 NULL,因此在日历馈送/方法响应中将没有可用的任务。

我还注意到它非常随机,因为在某些情况下(<10%)它可以正常工作,但在再次刷新后,输出再次减半。此外,每次刷新时,“剪切”的确切位置也不同。

有没有人可以确定问题所在?我试图查看是否有一种方法可以等到文件完全下载后再返回,但如果这不是 cURL 的默认行为,那就太奇怪了。我也尝试增加超时时间,但由于它返回一个值,我猜它也不会超时。

所有代码都可以在 Github 存储库中找到,到目前为止,这是我更改为调试的唯一部分:

        // get / put / delete requests should have HTTP Code 200 OK
        // only exception is the login method, which returns HTTP Code 200 OK
        if($httpCode == 200 && (strtolower($method) != 'post' || $action == '/login'))
        {
            $return = json_decode($output, true);

            if($_SERVER['REMOTE_ADDR'] == MY_IP) {
                if( is_null($return) ) {
                    echo "<b>Output of json_decode is null:</b><br><br>";
                    echo $output;   
                } else {
                    echo "<b>Output of json_decode os not null:</b><br><br>";
                    echo $output;   
                }
            }

            return $return;
        }

完整的响应应该类似于以下内容:

[{"assignee_id":null,"completed_at":null,"completed_by_id":null,"created_at":"2013-11-10T13:16:54Z"},{"assignee_id":null,"completed_at":null,"completed_by_id":null,"created_at":"2013-11-10T13:16:54Z"}]

但在大多数情况下,它是:

[{"assignee_id":null,"completed_at":null,"completed_by_id":null,"created_at":"2013-11-10T13:16:54Z"},{"assignee

当然,这是一个缩小的响应,响应中有更多可用信息,并且数组中有更多项目。

4

2 回答 2

1

出于测试目的,如果您使用该类进行身份验证,浏览到http://api.wunderlist.com/me/tasks会产生什么结果?

另外我确定你已经修复了,但是在 base.class.php 中,$action 被检查了两次空值,而不是 $action 和 $method。

于 2013-11-13T11:10:42.780 回答
0

问题出在奇妙清单上,只是在等待他们的修复:)

于 2013-11-14T01:14:36.663 回答