我正在创建一个必须与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)
]
]);
我无法连接...我在做什么错了吗?
谢谢
他们提供的示例是从同一变量两次格式化JSON
data: FormatJson(listFields, listFields), // ?????
无论如何,像往常一样传递键值对数组
$response = $client->post($link, [
'form_params' => [
'company' => $company,
'token' => $token,
]
]);
return json_decode((string) $response->getBody(), true);
Guzzle会自动序列化表单数据
希望这会有所帮助