【问题标题】:Parse.Cloud.httpRequest call with HTTP request header带有 HTTP 请求标头的 Parse.Cloud.httpRequest 调用
【发布时间】:2015-12-30 08:31:17
【问题描述】:

我对云代码函数“Parse.Cloud.httpRequest”有疑问。我想发送与以下 curl 命令相同的 HTTP GET 请求。但它似乎不起作用。如果您发现有问题,请提供帮助。

curl -H "Authorization: token xxx" "https://api.automatic.com/v1/trips"

注意:

我的代码是这样的。然后我访问了/trips。

var express = require('express');
var app = express();

app.set('views', 'cloud/views');
app.set('view engine', 'ejs');
app.use(express.bodyParser());

app.get('/trips', function(req, res) {
    Parse.Cloud.httpRequest({
        url: 'https://api.automatic.com/v1/trips',
        headers: {
            'Authorization': 'token xxx'
        },
        success: function (httpResponse) {
            console.log(httpResponse.text);
        },
        error: function (httpResponse) {
            console.error('Request failed with response code ' + httpResponse.status);
        }
    });
});

app.listen();

这是一个日志。

E2014-07-16T04:10:46.102Z] v170: Ran custom endpoint with:
Input: {"method"=>"GET", "url"=>"/trips", "headers"=>{"version"=>"HTTP/1.1",   "host"=>"easyparking.parseapp.com", "user-agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36", "accept"=>"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "accept-encoding"=>"gzip,deflate,sdch", "accept-language"=>"ja,en-US;q=0.8,en;q=0.6", "cache-control"=>"max-age=0", "x-forwarded-proto"=>"http"}}
Result: success/error was not called

【问题讨论】:

  • 网址以 'ttps' 而不是 'https' 开头是不是这篇文章的拼写错误?
  • 谢谢。网址有限制,所以我改变了它。不过现在好了。
  • 那么返回什么?不要只记录 .status,记录所有内容。
  • 不退货。甚至不调用成功或错误函数。
  • 在这个 httpRequest 调用之后 是否还有更多代码,在块之外?..

标签: javascript http curl parse-platform


【解决方案1】:

试试这个修改:

app.get('/trips', function(req, res) {
    Parse.Cloud.httpRequest({
      url: 'https://api.automatic.com/v1/trips',
      headers: {
        'Authorization': 'token xxx'
      }
    }).then(function(httpResponse) {
      console.log(httpResponse);
      res.end(httpResponse.text);
    }, function(err) {
      console.log(err);
      res.end(err);
    });
});

【讨论】:

【解决方案2】:

@Yohei,我相信你也可以这样做:

var express = require('express');
var app = express();

app.set('views', 'cloud/views');
app.set('view engine', 'ejs');
app.use(express.bodyParser());

app.get('/trips', function(req, res) {
    Parse.Cloud.httpRequest({
        url: 'https://api.automatic.com/v1/trips',
        headers: {
            'Authorization': 'token xxx'
        },
        success: function (httpResponse) {
            console.log(httpResponse.text);
            response.success(httpResponse.text);
        },
        error: function (httpResponse) {
            console.error('Request failed with response code ' + httpResponse.status);
            response.error('Request failed with response code ' + httpResponse.status);
        }
    });
});

app.listen();

见:Parse.com HTTPRequest {"code":141,"error":"success/error was not called"}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 2016-11-10
    • 2011-09-20
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    相关资源
    最近更新 更多