解析响应124,对于简单的GET请求超时

时间:2014-09-21 02:34:54

标签: parse-platform

对于我的生活,我无法弄清楚这一点。我在Parse.com上有以下代码:

Parse.Cloud.httpRequest({
  method: "GET",
  url: 'http://www.csse.monash.edu.au/~jwb/cgi-bin/wwwjdic.cgi?9ZIG%EF%BC%B0%EF%BC%B2%EF%BC',
  success: function(httpResponse) {
      response.success(httpResponse.text);
  },
  error: function(httpResponse) {
      response.error('Request failed with response ' + httpResponse.status);
  }
});

这是一个简单的GET请求,但它会挂起,大约10秒钟后,Parse.com将超时错误124:请求超时。

如果我替换https://www.google.comhttps://parse.com,它会立即向我提供结果。所以,我认为它可能是我正在尝试加载的页面,但我可以在我的浏览器上访问http://www.csse.monash.edu.au/~jwb/cgi-bin/wwwjdic.cgi?9ZIG%EF%BC%B0%EF%BC%B2%EF%BC,它会立即加载。

当我使用cURL时,请求也会立即加载:

curl -v http://www.csse.monash.edu.au/~jwb/cgi-bin/wwwjdic.cgi?9ZIG%EF%BC%B0%EF%BC%B2%EF%BC


* Adding handle: conn: 0x7fcb0c800000
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7fcb0c800000) send_pipe: 1, recv_pipe: 0
* About to connect() to www.csse.monash.edu.au port 80 (#0)
*   Trying 130.194.64.145...
* Connected to www.csse.monash.edu.au (130.194.64.145) port 80 (#0)
> GET /~jwb/cgi-bin/wwwjdic.cgi?9ZIG%EF%BC%B0%EF%BC%B2%EF%BC HTTP/1.1
> User-Agent: curl/7.30.0
> Host: www.csse.monash.edu.au
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Sun, 21 Sep 2014 02:30:23 GMT
* Server Apache/1.3.26 (Unix) mod_layout/3.0.4 mod_ssl/2.8.10 OpenSSL/0.9.6e is not blacklisted
< Server: Apache/1.3.26 (Unix) mod_layout/3.0.4 mod_ssl/2.8.10 OpenSSL/0.9.6e
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=UTF-8
< 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><TITLE>WWWJDIC: Text/word translation display</TITLE>
</HEAD><BODY>
<br>
<FONT color="red">PR</FONT>。<br>
<ul><li> PR 【ピーアール】   (n) (See パブリックリレーションズ) public relations; PR; ED </li>
</ul><br>
</BODY>
</HTML>
* Connection #0 to host www.csse.monash.edu.au left intact

我觉得我必须错过一些非常简单的事情。我添加了所有标题,似乎没有任何区别。有没有人有想法?

1 个答案:

答案 0 :(得分:1)

好的,我已经解决了这个问题,它花了我几个小时。首先,Parse不会接受Cloud Code之外的httpRequests,之后保存,保存和云功能。您还必须使用Parse Promise。

因此,在您的Cloud Code设置中的main.js中创建函数testParse,如下所示:

Parse.Cloud.define("testParse", function(request, response) {

    var promises = [];

    promises.push(Parse.Cloud.httpRequest({
        method: "GET",
        url: 'http://www.csse.monash.edu.au/~jwb/cgi-bin/wwwjdic.cgi?9ZIG%EF%BC%B0%EF%BC%B2%EF%BC'
    });

    Parse.Promise.when(promises).then(function(results) {
       response.success(results.status);
    }, function(error) {
        response.error(error);
    });
});

要调用该功能,您将使用

Parse.Cloud.run('testParse');

此解决方案有效。令人沮丧的是,只有10%的时间。我还有超时。

编辑: 好的,让它工作。在Parse.Cloud.define错误响应中再次调用该函数:

Parse.Promise.when(promises).then(function(results) {
    response.success(results.status);
}, function(error) {
    Parse.Cloud.run('testParse');
});