如何将ajax请求转换为guzzleHttp

问题描述 投票:0回答:1

我正在创建一个必须与api进行通信的应用程序,并且API的所有者在ajax中向我发送了一个示例,向我解释了它的工作原理。

[我正在使用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个回答
0
投票

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

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

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

$response = $client->post($link, [
        'form_params' => [
            'company' => $company,
            'token' => $token,
        ]
]);

return json_decode((string) $response->getBody(), true);

Guzzle会自动序列化表单数据

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.