Как конвертировать ajax-запрос в guzzleHttp - PullRequest
0 голосов
/ 08 октября 2019

Я создаю приложение, которое должно взаимодействовать с 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)
        ]
]);

Я не могу подключиться .. . Что я делаю не так?

Спасибо

1 Ответ

0 голосов
/ 08 октября 2019

В качестве примера они приводят форматирование JSON из одной и той же переменной дважды

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

В любом случае, передайте массив пары ключ-значение, как обычно

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

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

Guzzle будет автоматическисериализуйте данные формы

Надеюсь, это поможет

...