У меня есть приложение Laravel, которое должно отправить запрос POST с параметрами в API WebUntis, а ответ должен быть идентификатором сеанса. Я могу отправить запрос POST и получить ответ, но не получил ключ сеанса. Я протестировал код в Postman, и он работает.
маршрут / api.php
Route::get('auth', 'UntisController@auth');
UntisController.php
class UntisController extends Controller
{
public function auth()
{
$client = new \GuzzleHttp\Client();
$req = $client->post( 'https://asopo.webuntis.com/WebUntis/jsonrpc.do?school=htblva_villach',[
"id" => 8294829,
"method" => "authenticate",
"params" => [
"user" => "USERNAME",
"password" => "PASSWORD",
"client" => "web"
],
"jsonrpc" => "2.0"
],
['Content-Type' => 'application/json'
]);
dd($req);
}
}
ответ, который я получаю от POSTMAN, ответы, которые я хочу
Ответ, который я получаю от своего кода
Я уже пробовал это с
dd($req->getBody());
но у меня нет нужного мне сеанса.
У меня нет API, но если я сделаю запрос через Postman с теми же параметрами, я получу нужную мне информацию.
Можете ли вы опубликовать параметры, которые вы отправляете в почтальоне, по сравнению с вашим скриптом, и ответ, который вы получаете в почтальоне, по сравнению с вашим скриптом?
Я загрузил фото всех запросов и ответов
Возможный дубликат Guzzlehttp - Как получить тело ответа от Guzzle 6?
Думаю, работает нормально. В Guzzle есть несколько дополнительных шагов, чтобы использовать ответ. См. Ветку, которую я связал.
Попробуйте сделать dd($req->getBody());
tream {# 459 ▼ -stream: ресурс потока @ 288 ▼ wrapper_type: "PHP" stream_type: "TEMP" mode: "w + b" unread_bytes: 0 seekable: true uri: "php: // temp" options: []} -size: null -seekable: true -readable: true -writable: true -uri: "php: // temp" -customMetadata: []}
Это ответ, который я получаю, нет sessionid






Чей это сервер? У вас есть контроль над API, если нет, я не думаю, что есть способ получить что-то, что API не отправляет, если только нет другой конечной точки для получения нужного session_key