私は現時点では本当に不満であり、Guzzleでもっと経験豊富な人の助けを借りることができます。Guzzle 6 HTTPクライアントでブール値をPOSTできない
フルリンク応答ではなくAPIサーバーからのコードメッセージ応答を希望する場合は、ブール値を必要とするAPIに接続しています。
有効 無効はここで生の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
に切り替える必要はないので、どんな洞察力も大いに評価されます。
ありがとうございます!私たちは、ファイルを投稿したいとき
は、これは確かにトリックのおかげ – DrewT
は、任意の回避策を@DrewTたのですか? –
@terrylowはい、 ''json''や''form-params''の代わりに '' multipart/form-data''を使う必要があります。 docsはここでプロセスを記述しています:http://guzzle.readthedocs.io/en/latest/request-options.html?highlight=getconfig#multipart – DrewT