0

我现在真的很沮丧,可以求助于 Guzzle 经验丰富的人。

如果我想要来自 API 服务器的代码消息响应而不是完整的链接响应,我正在连接到一个需要布尔值的 API。

以下是原始 http 客户端 (Postman) 访问的两种返回类型之间差异的示例:

启用布尔代码: 在此处输入图像描述

禁用布尔代码: 在此处输入图像描述

我遇到的问题是,当我使用 Guzzle 6 发出相同的请求时,我将始终获得完整的链接响应,并且永远无法获得要应用的帖子正文中的布尔值。似乎布尔参数被字符串化为“真”(这是我的猜测)。

因此,以下两个 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在 Guzzle 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 回答