【问题标题】:How to convert ajax request to guzzleHttp如何将ajax请求转换为guzzleHttp
【发布时间】:2019-10-08 00:55:33
【问题描述】:

我正在创建一个必须与 api 通信的应用程序,API 的所有者向我发送@987654321 中的示例@ 解释它是如何工作的。

我正在使用 laravel,所以我创建了一个控制器并安装了 guzzleHttp 来处理来自 API 的请求,但我的问题是我无法将示例转换为 guzzleHttp

var listFields = ["token", "company"];​
var listValues = ["xxx", 2010];​
$.ajax({​
    type: "POST",​
    url: '<%= Page.ResolveUrl("https://website.com/api")%>',​
    data: FormatJson(listFields, listFields),​
    contentType: "application/json; charset=utf-8",​
    dataType: "json",​
    success: function (response) { ... },​
    failure: function (response) { ... },​
    error: function (response) { ... }​
});​

根据发送的描述,formatJson 是一个转换为 json 的函数。

我已经在form_params 中尝试了很多替代方案,例如:可能我不理解发送的示例或错误。

$token = env('API_TOKEN');
$company = env('API_COMPANY_ID');
$link = 'https://website.com/api';

$values = [$token, $company];

$client = new Client();

$result = $client->post($link, [
        'form_params' => [
          'token' => json_encode(['token', 'empresa']),
          'empresa' => json_encode($values)
        ]
]);

我无法连接...我做错了什么?

谢谢

【问题讨论】:

    标签: javascript ajax laravel guzzle


    【解决方案1】:

    他们提供的示例是两次从同一个变量格式化 JSON

    data: FormatJson(listFields, listFields),​ // ?????
    

    无论如何,像往常一样传递键值对数组

    $response = $client->post($link, [
            'form_params' => [
                'company' => $company,
                'token' => $token,
            ]
    ]);
    
    return json_decode((string) $response->getBody(), true);
    

    Guzzle 会自动序列化表单数据

    希望对你有帮助

    【讨论】:

    • 当我运行这个页面进程但返回 ERR_CONNECTION_REFUSED
    • 那是 API 响应,我不知道 API 到底需要什么,你想使用什么 API?
    猜你喜欢
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2016-10-10
    • 2018-02-16
    • 1970-01-01
    • 2018-01-26
    相关资源
    最近更新 更多