0

私は現時点で本当にイライラしているので、Guzzle の経験が豊富な人の助けを借りることができます.

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

生の http クライアント (Postman) によってアクセスされる 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"}}"

BooleanGuzzle 6form_params配列で値を送信するにはどうすればよいですか? に切り替える必要がないので、どんな洞察も大歓迎ですCURL

ありがとう!

4

1 に答える 1

9

form_params投稿本文として送信するように配列を変更するだけjsonです:)

$response = $client->post($request_url, array(
               'json' => $this->req_body
            ));
于 2016-09-01T18:39:04.020 に答える