Laravel отправка почтового запроса с HTTP-запросом жрет - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть простая форма регистрации, которую пользователь может зарегистрировать в моем приложении, теперь я хочу отправить отправленные данные в другой сервис.

Сначала я проверяю свой запрос с помощью почтальона, используя следующую необработанную опцию в панель почтальона.

URL-адрес API: app3.salesmanago.pl/api/contact/upsert

JSON DATA:
{
  "clientId":"w2ncrw06k7ny45umsssc",
  "apiKey":"ssssj2q8qp4fbp9qf2b8p49fz",
  "requestTime":1327056031488,
  "sha":"ba0ddddddb543dcaf5ca82b09e33264fedb509cfb4806c",
  "async" : true,
  "owner" : "adam@rce.com",
  "contact" : { 
        "email" : "test-1@konri.com",
        "name" : "Test",
        "address":{
            "streetAddress":"Brzyczynska 123",
      }
    }
}

Я получаю следующий успешный результат

{
    "success": true,
    "message": [],
    "contactId": "b52910be-9d22-4830-82d5-c9dc788888ba",
    "externalId": null
}

Теперь с помощью запроса guuzle htpp в laravel

 protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
            ]);

        $current_timestamp = Carbon::now()->timestamp;
        $client = new Client();
        $request = $client->post('app3.salesmanago.pl/api/contact/upsert', [
            \GuzzleHttp\RequestOptions::JSON => [        
            'headers' => [
                'Accept' => 'application/json, application/json',
                'Content-Type' => 'application/json',
                'clientId' => 'dd2ncrw06k7ny45umce',
                'apiKey' => 'ddjdd2q8qp4fbp9qf2b8p49fdzd',
                'sha' => ' wba0b543dcaf5ca82b09e33264fedb4509cfb4806ec',
                "requestTime" => $current_timestamp,
                "owner" => "testemail@wp.com",
            ],
            'form_params' => [
                'name' => $data['name'],
                'email' => $data['email'],
            ]
          ]
        ]);

        $response = $request->getBody();
        $r = json_decode($response);
        dd($r);
        return $user;
    }

Когда я запускаю свое приложение и отправляю данные формы, я получаю это, используя те же данные, что и в почтальоне, я получаю это

{#306 ▼
  +"success": false
  +"message": array:1 [▼
    0 => "Not authenticated"
  ]
  +"contactId": null
  +"externalId": null
}

Может кто-нибудь сказать мне, почему в Почтальоне все работает нормально, но в laravel не получается?

Что не так с моим кодом?

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Потому что вы написали заголовки внутри опции json. вот правильный

$client = new Client();
$request = $client->post('app3.salesmanago.pl/api/contact/upsert', [
    \GuzzleHttp\RequestOptions::JSON => [
        'form_params' => [
            'name'  => $data['name'],
            'email' => $data['email'],
        ],
    ],
    \GuzzleHttp\RequestOptions::HEADERS          => [
        'Accept'       => 'application/json, application/json',
        'Content-Type' => 'application/json',
        'clientId'     => 'dd2ncrw06k7ny45umce',
        'apiKey'       => 'ddjdd2q8qp4fbp9qf2b8p49fdzd',
        'sha'          => ' wba0b543dcaf5ca82b09e33264fedb4509cfb4806ec',
        "requestTime"  => $current_timestamp,
        "owner"        => "testemail@wp.com",
    ],
]);
0 голосов
/ 02 апреля 2020

Вы можете использовать его как

$client->request('POST', 'app3.salesmanago.pl/api/contact/upsert', [
    'form_params' => [
        'name'  => $data['name'],
        'email' => $data['email'],
    ],
    'headers' => [
        'Accept'       => 'application/json, application/json',
        'Content-Type' => 'application/json',
        'clientId'     => 'dd2ncrw06k7ny45umce',
        'apiKey'       => 'ddjdd2q8qp4fbp9qf2b8p49fdzd',
        'sha'          => ' wba0b543dcaf5ca82b09e33264fedb4509cfb4806ec',
        'requestTime'  => $current_timestamp,
        'owner'        => 'testemail@wp.com',
    ]
]);
...