通过 Parse Cloud 代码的 HTTP 请求

HTTP request through Parse Cloud code

所以我试图让云代码执行一个 aftersave 事件,该事件会 ping 另一个位置以进行一些数据保存。

它还有一些数据需要发送。

Parse.Cloud.afterSave("ArtPiece", function(request) {
var artistURL = 'http://www.gallery-admin-dev.iartview.com/Gilmans/imageSave.php';

var pieceName = "Robert Rauschenberg Quote";
var url = 'http://www.gilmancontemporary.com/wp-content/uploads/2015/06/Delicate_Garden.The_Bear.48x42.jpeg';

Parse.Cloud.httpRequest({
    url: artistURL,
    dataType : "text",
    crossDomain: true,
    type:"GET",
    data : {
      pieceName : pieceName,
      url : url
    },

    success: function(httpResponse) {
        response(httpResponse.text);
    },
    error: function(httpResponse) {
        response('Request failed with response code ' + httpResponse.status)
    }
});

});

代码没有给出错误,也没有任何警告。我 saving/creating 个条目工作正常。

Cors 已经处理,因为我可以使用 ajax 脚本成功地进行此调用。

知道为什么没有发送吗? 我可以在解析 httpRequest 中没有数据吗? 不能跨域吗?

或者 有没有办法在 Parse Cloud 之外测试此代码???

您调用 httpRequest 函数的方式在云中不正确。您也不必担心 CORS,因为您不是在浏览器环境中工作。试试这个:

Parse.Cloud.httpRequest({
    url: artistURL,
    params: {
      pieceName : pieceName,
      url : url
    },
    success: function(httpResponse) {
        response(httpResponse.text);
    },
    error: function(httpResponse) {
        response('Request failed with response code ' + httpResponse.status)
    }
});

要测试此外部云环境,您可以使用 curl 命令。它将类似于:

curl -G -v "http://www.gallery-admin-dev.iartview.com/Gilmans/imageSave.php" --data-urlencode "pieceName=Robert Rauschenberg Quote,url=http://www.gilmancontemporary.com/wp-content/uploads/2015/06/Delicate_Garden.The_Bear.48x42.jpeg"