【问题标题】:Parse.com REST API Does Not Return AnythingParse.com REST API 不返回任何内容
【发布时间】:2014-10-08 14:15:10
【问题描述】:

我遇到了一个重大问题,希望有人能提供帮助。

我们有使用 Parse 作为后端的 Web 和 Android 应用程序。我们在这两个方面都发生了这个问题。我将解释Android问题。

我们使用 REST API 将数据保存到 Parse.com。我们不使用 SDK 的原因是我们想利用仅在 RESTAPI 中可用的批处理操作。

{
  "requests": [
    {
      "body": {
        "isFriable": false,
        "haDetail": "",
        "sizeOther": "",
        "colourOther": "",
        "texture": "",
        "fieldInspection": {
          "__type": "Pointer",
          "className": "FieldInspection",
          "objectId": "YS5bXHBwDu"
        },
        "surfaceSubType": {
          "__type": "Pointer",
          "className": "SurfaceSubType",
          "objectId": "d4IL5k1pv5"
        },
        "size": {
          "__type": "Pointer",
          "className": "HomogenousMaterialSize",
          "objectId": "ezr3uHDUvt"
        },
        "colour": {
          "__type": "Pointer",
          "className": "HomogenousMaterialColour",
          "objectId": "NqYXJcOkPE"
        }
      },
      "method": "POST",
      "path": "/1/classes/HomogenousArea"
    }
  ]
}

以上是我的要求。使用基本的默认 HttpClient 将其推送到 https://api.parse.com/1/batch

当我们执行 HTTP 请求时,它有时会挂起,不会返回任何结果。大约每 5 或 6 个请求中就有一个这样做。成功的后续请求中完全相同的数据将正常通过。问题是那时我们有重复的记录持久化到 Parse,因为我们的同步逻辑从未完成,因为我们没有得到响应。

Parse 中有什么东西可以用来调试这样的请求吗?下面是我们正在使用的当前 http 客户端实现。注意:还从 Square 中放入 OkHttp 并遇到完全相同的问题。

        // Instantiate the http client to make the batch request
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost post = setupHttpPost(url);

        // Assign the data to the post
        StringEntity entity = new StringEntity(insertData);
        post.setEntity(entity);

        // Setup the response handler
        ResponseHandler response = new BasicResponseHandler();

        // Make the call to Post the new data
        Object rersponse = httpClient.execute(post, response);
        if (rersponse != null) {
            return rersponse.toString();    
        }
        return null;

【问题讨论】:

    标签: android http parse-platform response


    【解决方案1】:

    ./batch....的奇怪行为

    确保您没有丢失解析错误响应。 IMO - 如果您没有密切注意 http 响应中实体上的处理程序,有时可能会出现 JSON 解析错误或可能会遗漏的东西......

    我没有使用 Parse 批处理 api。我使用了多线程 http 客户端,但没有看到您提到的普遍存在的超时类型问题?

    由于您使用 REST,您应该能够在 CURL 客户端中包装一些测试调用,您可以使用 CURL CLI 开关检测这些调用以提供更多 -debug ...

    由于您使用 REST,您可以从批处理接口切换到多线程客户端,(参见“线程”示例,参见 org.apache 的“配置”示例 ...

    猜想,但如果你分解你的批次,可能会有更多 Http EXEC 的背景,每个具有更小的有效负载可能会更好????

    链接中的配置示例显示了如何按域配置池大小以及如何检测超时(conn 超时、req 超时等)。

    【讨论】:

    • 感谢罗伯特的回复。外部调用方法包装在 AsyncTask 中,因此网络操作不会阻塞 UI 线程。我还减少了请求中的数据量,但仍然相同。我的下一个停靠港是直接发送,但我怀疑我不会看到任何错误,因为它的工作是间歇性的
    • 我会钻取 AsnycTask,这就是你的问题所在。
    • 我已经在走这条路了。会让你知道结果。再次感谢您的快速回复
    猜你喜欢
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    相关资源
    最近更新 更多