2016-09-01 6 views
0

私は現時点では本当に不満であり、Guzzleでもっと経験豊富な人の助けを借りることができます。Guzzle 6 HTTPクライアントでブール値をPOSTできない

フルリンク応答ではなくAPIサーバーからのコードメッセージ応答を希望する場合は、ブール値を必要とするAPIに接続しています。

有効

ブールコード: enter image description here

無効

ブールコード: enter image description here

はここで生のHTTPクライアント(ポストマン)によってアクセスように2つの戻り値の型の違いの例であり、私が持っている問題は、Guzzle 6を使って同じ要求をすると、私は常に完全なリンク応答を得て、適用されるポストボディのブール値を決して得ることができないということです。ブール値のパラメータが 'true'(これは私の推測です)として文字列化されているようです。

したがって、次の2件のPOSTリクエストがまったく同じ結果を生成:

 // define request parameters 
     $this->req_body = [ 
      'email' => $encrypted_email, 
      'code' => true 
     ]; 

     // request url 
     $request_url = $api_endpoint . self::RETURN_TYPE; 

     // instance of Guzzle Client 
     $client = $this 
        ->client(); 

     // abstract connection 
     // XXX: this request needs no headers 
     $response = $client 
         ->post($request_url, array(
          'form_params' => $this->req_body 
         )); 
     // real data 
     $data = $response 
         ->getBody() 
         ->getContents(); 

     // send output 
     $this->response = $data; 

を私はコメントアウトcodeフォームパラメータをしようとした場合:

 // define request parameters 
     $this->req_body = [ 
      'email' => $encrypted_email\\, 
      //'code' => true 
     ]; 

     // request url 
     $request_url = $api_endpoint . self::RETURN_TYPE; 

     // instance of Guzzle Client 
     $client = $this 
        ->client(); 

     // abstract connection 
     // XXX: this request needs no headers 
     $response = $client 
         ->post($request_url, array(
          'form_params' => $this->req_body 
         )); 
     // real data 
     $data = $response 
         ->getBody() 
         ->getContents(); 

     // send output 
     $this->response = $data; 

返されたAPIのレスポンスは、常に次のとおりです。 "{"success":{"code":200,"message":"https:\/\/webservices.bvdpetroleum.com\/users\/user-password-reset\/q8VqSAbfTOkW0EMvSTfK5qSS4zr28rSwdQy3D\/uc9wtz3+RI4LH7hDkh\/ZbTfqcC"}}"

グーグルでBooleanの値を送信するにはどうすればいいですか?form_paramsアレイ?私はCURLに切り替える必要はないので、どんな洞察力も大いに評価されます。

ありがとうございます!私たちは、ファイルを投稿したいとき

答えて

3

だけjsonポスト本体として送信するform_params配列を変更:)

$response = $client->post($request_url, array(
       'json' => $this->req_body 
      )); 
+0

は、これは確かにトリックのおかげ – DrewT

+0

は、任意の回避策を@DrewTたのですか? –

+0

@terrylowはい、 ''json''や''form-params''の代わりに '' multipart/form-data''を使う必要があります。 docsはここでプロセスを記述しています:http://guzzle.readthedocs.io/en/latest/request-options.html?highlight=getconfig#multipart – DrewT

関連する問題