如何POST到返回文本的URL编码API?

时间:2016-05-25 20:32:45

标签: php jquery ajax http jsonp

我有一个独特的情况。我们正在使用Ytel的X5云联络中心。他们有一个API,允许我们将人员添加到我们的数据库。

您通过GET将数据发送到API(奇怪,我知道,但我无法控制服务器,因为它由Ytel拥有)。

所以我有URL编码了我的所有字段。我知道结果字符串是正确的,因为如果我复制字符串并将其粘贴到我的浏览器并点击回车,我会收到成功消息。

成功消息是纯文本。

调用此类API的正确方法是什么?

我尝试使用jQuery / Ajax,但一直得到“Allow-Control-Access-Origin标头不存在,因此不允许localhost ......”。所以我尝试将“数据类型”设置为“jsonp”。

    jQuery.ajax({
    url: ytelPostingString,
    cache: false,
    type: "POST",
    dataType: "jsonp",
    //What do you want to do when the request succeeds?
    success: function(result) {
        console.log(result);
        console.log("Success");
    },
    //What do you want to do when the request fails?
    error: function(result) {
        console.log("Error:" + result);
        console.log("Failure");
    }

});

这很有效!它成功地将数据放入数据库,唯一的缺点是,服务器的响应不是jsonp,它是纯文本。因此,即使api请求成功,也将始终调用“错误”回调,因为ajax期望返回jsonp对象。

所以现在我正在尝试通过PHP进行API调用,但我仍然不知道“正确”的方法是什么?

是否可以在javascript(或PHP)中“打开”网页并将输出(又称“网页”)存储到变量中,然后我可以对其进行评估?

另一个有趣的注意事项,如果我在文件_get_contesnts(URL)之前调用urlencode(URL)或rawurlencode(URL),则file_get_contents将失败。由于某种原因,urlencode和rawurlencode会包含:和/会导致file_get_contents失败。任何想法?

2 个答案:

答案 0 :(得分:0)

任何人都会在未来阅读这篇文章:

我必须将我的值发布到我的服务器上的php脚本,并使用PHP进行API调用。就像调用file_get_contents($URL);

一样简单

注意:为了让file_get_contents();处理URL,必须在PHP.ini文件中将“allow_fopen_url”设置为“yes”。

答案 1 :(得分:0)

  • 永远不要type: "POST"用户dataType: "jsonp"
  • 如果您在localhost上运行,您将收到错误Allow-Control-Access-Origin header is not present,因此请尝试使用此插件来允许来自原点:

适用于Google Chrome:https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

Firefox的

https://github.com/spenibus/cors-everywhere-firefox-addon