У меня есть следующий код, который в настоящее время используется в SDK для интеграции, и я хочу перенести его на использование Guzzle PHP для более чистого и упрощенного кода.
<?php
class Request
{
private $is_last_session_id;
public function send($s_url, $data)
{
$params = [
'http' => [
'method' => 'POST',
'content' => $data,
'header' => "Content-type: application/x-www-form-urlencoded",
],
];
$ctx = stream_context_create($params);
ini_set('user_agent', 'PHP Client /5.2.00');
$fp = fopen($s_url, 'rb', false, $ctx);
$response = stream_get_contents($fp);
$meta = stream_get_meta_data($fp);
foreach (array_keys($meta) as $h) {
$v = $meta[$h];
if (is_array($v)) {
foreach (array_keys($v) as $hh) {
$vv = $v[$hh];
if (is_string($vv) && substr_count($vv, 'JSESSIONID')) {
$this->is_last_session_id = substr($vv, strpos($vv, '=') + 1, 24);
}
}
}
}
return $response;
}
}
Вот код, который используетGuzzle
private function guzzleRequest($uri, $data)
{
$client = new \GuzzleHttp\Client();
$client->request('POST', $uri, [
'form_params' => $data,
'headers' => [
'Content-type' => 'application/x-www-form-urlencoded',
],
]);
}
Из кода я понимаю, что он выполняет запрос POST, но когда я пытаюсь использовать $client->post()
или $client->request('POST',$data)
Guzzle с конкретными заголовками в соответствии с кодом выше, я получаюошибка 500 сервера. Приведенный выше код, как работает, отлично. Я что-то упускаю при вызове методов с помощью Guzzle?