Не могу опубликовать данные с помощью запроса Guzzle в Laravel 5.4 - PullRequest
0 голосов
/ 04 июня 2019

У меня проблемы с отправкой данных на мой производственный контроллер Laravel для хранения почтового запроса, сделанного с помощью Guzzle, с моего локального сервера WAMP.Я могу успешно вернуть данные с помощью запроса get, но публикация данных не работает.У меня есть настройка Oauth2 с использованием Laravel Passport.

Ниже приведен мой пост-запрос Guzzle с сервера WAMP.

$client = new \GuzzleHttp\Client();

$response = $client->post('https://www.website.com/oauth/token', [
    'form_params' => [
        'client_id' => 99,
        'client_secret' => '***',
        'grant_type' => 'password',
        'username' => 'username@mail.com',
        'password' => 'password',
        'scope' => '*',
    ],
]);

$auth = json_decode((string) $response->getBody()->getContents());
$data = [
    'first_name' => 'Post', 'last_name' => 'Man',
    'email' => 'postman@mail.com', 'phone' => '0400000000',
    'country' => 'Internet', 'state' => 'HTTP'
];
$json_data = json_encode($data);

$header = array('Authorization' => 'Bearer '.$auth->access_token, 'Content-Type' => 'application/json');
$response = $client->post('https://www.website.com/api/store_data',
    ['body' => $json_data, 'headers' => $header]);

$stream = $response->getBody()->getContents();
dd($stream);

Возвраты:

"{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}"

И когда я пытаюсьдля сохранения данных в моем производственном контроллере в запросе ничего не встречается:

$enquiry = new Enquiry;
$enquiry->first_name = $request->get('first_name');
$enquiry->last_name = $request->get('last_name');
....
$enquiry->save();

1 Ответ

0 голосов
/ 04 июня 2019

Публикация данных без json_encode и использование form_params вместо body

$client = new \GuzzleHttp\Client();

$response = $client->post('https://www.website.com/oauth/token', [
    'form_params' => [
        'client_id' => 99,
        'client_secret' => '***',
        'grant_type' => 'password',
        'username' => 'username@mail.com',
        'password' => 'password',
        'scope' => '*',
    ],
]);

$auth = json_decode((string) $response->getBody()->getContents());
$data = [
    'first_name' => 'Post', 'last_name' => 'Man',
    'email' => 'postman@mail.com', 'phone' => '0400000000',
    'country' => 'Internet', 'state' => 'HTTP'
];

$header = array('Authorization' => 'Bearer '.$auth->access_token, 'Content-Type' => 'application/json');
$response = $client->post('https://www.website.com/api/store_data',
    ['form_params' => $data, 'headers' => $header]);

$stream = $response->getBody()->getContents();
dd($stream);

Для хранения данных:

$post = $request->all();

Enquiry::create([
    'first_name' => $post['first_name'],
    'last_name' => $post['last_name']
]);

...