#php #laravel #post #&uzzle
#php #laravel #Публикация #&uzzle
Вопрос:
Я использую Guzzle для вызова API (Fitnet). С запросом GET все в порядке, но у меня проблема с запросом POST. Похоже, что данные не отправляются в API
Мой код :
$contract = array("companyId" =&&t; 1,
"companyName"=&&t; "",
"contractCreator" =&&t; "",
"contractCurrency"=&&t; "",
"deliveryAmount"=&&t; 12346,
"title"=&&t; "blabla7",
"orderNumber"=&&t; "numéro de commande",
"upperLimit"=&&t; "",
"be&inDate"=&&t; "10/10/2019",
"billin&Date"=&&t; "10/10/2021",
"endDate"=&&t; "10/10/2021",
"businessUnit"=&&t; 0,
"businessUnitName"=&&t; "",
"customerId"=&&t; 48,
"billin&Mode"=&&t; 2,
"billin&Plannin&"=&&t; 0,
"billin&Plannin&Name"=&&t; "",
"profitCenter"=&&t; "",
"status"=&&t; 1,
"statusName"=&&t; "",
"description"=&&t; "",
"billableExpenses"=&&t; true,
"contractCate&oryDesi&nation"=&&t; "",
"contractCate&oryId"=&&t; 2);
$res = $client-&&t;post('https://myurl.fitnetmana&er.com/FitnetMana&er/rest/contracts/create', [
'headers' =&&t; ['Content-type' =&&t; 'application/json'],
'auth' =&&t; ['myemail', 'mypassword'],
'json' =&&t; [ 'Contract' =&&t; json_encode($contract) ]
]);
Вы можете мне помочь?
Заранее спасибо,
F.
Ответ №1:
Это работает с :
$res = $client-&&t;post('https://myurl.fitnetmana&er.com/FitnetMana&er/rest/contracts/create', [
'auth' =&&t; ['myemail', 'mypassword'],
'json' =&&t; $contract
]);
Спасибо @formve&a 🙂
Ответ №2:
Guzzle закодирует данные в JSON для вас, вам не следует кодировать их заранее.
$res = $client-&&t;post('https://myurl.fitnetmana&er.com/FitnetMana&er/rest/contracts/create', [
'auth' =&&t; ['myemail', 'mypassword'],
'json' =&&t; $contract
]);
Вам также не нужно указывать заголовок content-type.
Комментарии:
1. спасибо, но у меня такая же проблема с вашим кодом :-/
2. какой ответ вы получаете от API?
3. я получил «Ошибка клиента:
POST https://neoweb.fitnetmana&er.com/FitnetMana&er/rest/contracts/create
привела к400 Bad Request
ответу: Пожалуйста, укажите идентификатор компании»4.
json' =&&t; [ 'Contract' =&&t; $contract ]
вы уверены, что вам нужен этот «Контракт» там? как насчетjson' =&&t; $contract
?5. Я рад. Пожалуйста, примите ответ, если это решит вашу проблему.