Отправка данных JSON между двумя серверами с помощью Guzzle - PullRequest
0 голосов
/ 14 мая 2019

Я отредактировал этот вопрос, поскольку понял, что совершенно не на том пути, однако у меня все еще есть проблема.

Используя Guzzle, как я могу отправить объект в JSON-форме с моего сервера магазина, который не использует Laravel, на мой сервер возвратов, который использует Laravel?

Я продолжаю получать следующую ошибку:

Client error: `POST https://returns.jdoe.blah.test/createReturn` resulted in a `419 unknown status`.

Я думаю, это как-то связано с тем, что у меня нет токена, но я не знаю, что с этим делать. Я знаю, что Laravel использует токены CSRF, но сервер моего магазина не использует эту форму.

На сервере магазина, когда пользователь делает заказ, он сохраняется в объекте «$ order». Я добавил следующий код в order_details.php, чтобы передать два конкретных атрибута объекта заказа:

$client = new Client();
$url = "https://returns.jdoe.blah.test/createReturn";
$post_data = array(
    'orderId' => $order['aufnr'],
    'customerId' => $order['kundennummer']
);

$data = json_encode($post_data);

$request = $client->post($url, array(
        'content-type' => 'application/json'
));

$request->setBody($data);

$response = $request->send();

Тогда в моем проекте Laravel у меня есть:

web.php

Route::post('/createReturn', 'ProductReturnsController@createReturn');

ProductReturnsController.php

<?php

namespace App\Http\Controllers;

use App\ProductReturn;
use Illuminate\Http\Request;

class ProductReturnsController extends Controller
{
    public function createReturn($json)
    {
        echo "hallo";

/*        $jsonDecoded = json_decode($json);

        $orderId = $jsonDecoded['orderId'];

        echo $orderId;*/

        return view('data');
    }
}

data.blade.php

<html>
    <head>
        Test
    </head>

    <body>
        This is a test page.
    </body>
</html>

Если вам что-нибудь от меня понадобится, чтобы помочь мне решить эту проблему, пожалуйста, не стесняйтесь спрашивать. Спасибо:).

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Попробуйте dd($response->getBody()->getContents()) или dd((string) $response->getBody()).Тело ответа - это объект потока, поэтому, если вы хотите получить строку, вам нужно выполнить дополнительный вызов метода.

0 голосов
/ 14 мая 2019

Ответ на ваш вопрос фактически находится на первой странице документации Guzzle: http://docs.guzzlephp.org/en/stable/

Вы выполняете var_dump ($ response), который фактически является объектом ответа для вашего запроса.Этот объект имеет метод getBody (),

Поэтому попробуйте вместо этого сделать

dd($response->getBody());

.

...