Жрет http и Laravel Http post метод замените методом get. 405 метод не разрешен - PullRequest
1 голос
/ 07 апреля 2020

Некоторая информация о проблеме:

  • Я создаю клиент-жульник, используя метод 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

enter image description here

Метод GET вместо POST

Мой маршрут:

enter image description here

Я использую Почтальон и локон. Оно работает! блин.

<?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;

1 Ответ

0 голосов
/ 07 апреля 2020

Проблема в том ... Вы должны использовать https: // instad of http: //

...