Некоторая информация о проблеме:
- Я создаю клиент-жульник, используя метод POST, но он заменен методом GET.
- Я пытаюсь использовать
Illuminate\Support\Facades\Http
в Laravel 7 .x но получаю ту же ошибку. - Сервером API является Django Rest Framework.
- Я получил ответ 405. Метод не разрешен.
Мой код использует guzzle:
public static function post($url, $headers, $body)
{
$client = new Client([
'headers' => $headers
]);
$response = collect();
try {
$response->code = 200;
$response->body = json_decode($client->post($url, $body)->getBody()->getContents());
} catch (RequestException $e) {
$response->code = $e->getCode();
$response->body = $e->getResponse() ? $e->getResponse()->getBody()->getContents() : $e->getMessage();
$response->url = $url;
}
return $response;
}
public static function posting()
{
$url = 'http://xapi-staging.uii.ac.id';
$headers = [
'Content-Type' => 'application/json',
'Authorization' => ""
];
$body = [
'form_params' => [
"parameter" => "value"
]
];
return static::post($url, $headers, $body);
}
dd(static::posting());
Я использую и form_params, и json, но все равно получаю то же самое ошибка.
Затем я использую Laravel Illuminate\Support\Facades\Http
Http::withHeaders([
'Authorization' => ""
])->post('http://xapi-staging.uii.ac.id', [
"parameter" => "value",
]);
см. Illuminate\Support\Facades\Http
do c at: https://laravel.com/docs/7.x/http-client#request -данные
Результат с использованием Laravel Illuminate\Support\Facades\Http
Метод GET вместо POST
Мой маршрут:
Я использую Почтальон и локон. Оно работает! блин.
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://xapi-staging.uii.ac.id",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>"{\n \"parameter\": \"value"",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.ey..",
"Content-Type: text/plain"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;