Laravel中的guzzlephp:使用表单数据参数(如邮递员表单数据

时间:2019-10-16 13:00:48

标签: laravel postman guzzle6 guzzlehttp

我想将带有后请求的数据发送到API。 对于邮递员,此API仅在我将参数设置为此类图片中的表单数据时有效

enter image description here

这是我的代码

     $params = array(
        'From ' => 'THR',
        'To' => 'KIH',
        'Date' => '2019/09/17' ,
        'AdultCount' => '1' ,
        'ChildCount' => '0',
        'InfantCount' => '0',
        'ApiSiteID' =>  '198-10001-1-10' ,
        'UserID' =>  '3df91-s77' ,
    );
    $client = new Client(['base_uri' => 'http://something.site.ir/api/FlightReservationApi/'] );
      $response = $client->request('POST', 'SearchFlightData' ,
        [      'form_params' => [  $params] ] );

    $body= $response->getBody();
    $remainingBytes = $body->getContents();
    dd($remainingBytes);

但这对我不起作用。 我使用了所有这些参数(json,form_params,body),但它们对我都不起作用

我使用的是laravel 5.4和狂饮6.3

根据guzzlephp文档,此配置用于 application / x-www-form-urlencoded 发送参数,但是我需要配置用于 form-data 发送参数

  

发送application / x-www-form-urlencoded POST请求需要您>在form_params请求选项中将POST字段指定为数组。

$response = $client->request('POST', 'http://httpbin.org/post', [
    'form_params' => [
        'field_name' => 'abc',
        'other_field' => '123',
        'nested_field' => [
            'nested' => 'hello'
        ]
    ]
]);

1 个答案:

答案 0 :(得分:0)

应该是

$client = new Client(['base_uri' => 'http://something.site.ir/api/FlightReservationApi/'] );
  $response = $client->request('POST', 'SearchFlightData' ,
    [      'form_params' =>  $params ] );

代替

$client = new Client(['base_uri' => 'http://something.site.ir/api/FlightReservationApi/'] );
  $response = $client->request('POST', 'SearchFlightData' ,
    [      'form_params' => [  $params] ] );

实际上是将一个数组($ params)包裹在另一个数组中。