php - 如何发布到返回文本的 URL 编码 API?

标签 php jquery ajax http jsonp

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

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

所以我对所有字段都进行了 URL 编码。我知道生成的字符串是正确的,因为如果我复制该字符串并将其粘贴到我的浏览器中并按回车键,我会收到一条成功消息。

成功消息是纯文本。

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

我尝试使用 jQuery/Ajax,但一直收到“Allow-Control-Access-Origin header is not present, therefore localhost is not allowed...”。所以我尝试将“数据类型”设置为“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)中“打开”网页并将输出(也称为“网页”)存储到一个变量中,然后我可以对其求值?

另一个有趣的注意事项,如果我在 file_get_contesnts(URL) 之前调用 urlencode(URL) 或 rawurlencode(URL),file_get_contents 会失败。出于某种原因,urlencode 和 rawurlencode 是 encogind : 和/导致 file_get_contents 失败。有什么想法吗?

最佳答案

致 future 阅读此文的任何人:

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

一样简单

注意:为了使 file_get_contents(); 在 URL 上工作,您必须在 PHP.ini 文件中将“allow_fopen_url”设置为“yes”。

关于php - 如何发布到返回文本的 URL 编码 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37447099/

相关文章:

PHP, MySQL 数据库 .`table` , 引号存在,我不明白

php - Ajax 和 JSON 响应问题

jquery - 动画滚动以锚定在页面上

javascript - 只允许授权的 AJAX 请求

javascript - 如何在此代码上实现 jQuery cookie

javascript - 检查所有 Ajax 请求何时完成 - 纯 JavaScript

javascript - 使用长服务器端脚本加载网页的最佳实践

php - url/位置中的端口的 cURL 调用不起作用 - 无法连接到主机

javascript - php在目录中创建文件

php - AJAX 调用过多