Php Guzzle 422不可处理实体错误

Php Guzzle 422不可处理实体错误,php,guzzle,browserstack,Php,Guzzle,Browserstack,我正在使用browserstack屏幕截图API-以下旋度正在工作: curl -u "username:password" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"browsers": [{"os": "Windows", "os_version": "7", "browser_version": "8.0", "browser": "ie"}], "url": "http://googl

我正在使用browserstack屏幕截图API-以下旋度正在工作:

curl -u "username:password" -H "Content-Type: application/json" -H "Accept: application/json"  -d '{"browsers": [{"os": "Windows", "os_version": "7", "browser_version": "8.0", "browser": "ie"}], "url": "http://google.com"}' http://www.browserstack.com/screenshots
然而,当我用guzzle尝试相同的调用时,我得到422个不可处理的实体错误

$client = new GuzzleHttp\Client();
$request = $client->post('http://www.browserstack.com/screenshots', [
        'headers' => ['Content-type' => 'application/json'],
        'auth' =>  ['username', 'password']
]
);

$data = ['browsers' => ['os' => 'Windows', 'os_version' => '7', 'browser_version' => '8.0', 'browser' => 'ie'], 'url' => 'http://google.com'];
$request->setBody($data);
$response = $request->send();
dd($response);

您能建议如何调试此问题吗?

要将JSON发送到屏幕截图API,您需要将其格式化为JSON字符串

$client = new GuzzleHttp\Client();
$request = $client->post('http://www.browserstack.com/screenshots', [
        'headers' => ['Content-type' => 'application/json'],
        'auth' =>  ['username', 'access_key'],
        'body' => '{"browsers": [
                           {"os": "Windows", "os_version": "7", "browser_version": "8.0", "browser": "ie"},
                           {"os": "android", "os_version": "4.4", "device": "HTC One M8", "browser": "Android Browser"}
                    ],
                    "url": "http://www.lipsum.com"}'
            ]
        );
然后,您将能够在页面上查看进度


有关如何使用Guzzle发送POST请求的指南,请参阅本文档-。

要将JSON发送到屏幕截图API,需要将其格式化为JSON字符串

$client = new GuzzleHttp\Client();
$request = $client->post('http://www.browserstack.com/screenshots', [
        'headers' => ['Content-type' => 'application/json'],
        'auth' =>  ['username', 'access_key'],
        'body' => '{"browsers": [
                           {"os": "Windows", "os_version": "7", "browser_version": "8.0", "browser": "ie"},
                           {"os": "android", "os_version": "4.4", "device": "HTC One M8", "browser": "Android Browser"}
                    ],
                    "url": "http://www.lipsum.com"}'
            ]
        );
然后,您将能够在页面上查看进度


有关如何使用Guzzle发送POST请求的指南,请参阅此文档-。

我在方法上有一个错误。它应该是$client->createRequest,而不是$client->post 另外,我在传递数据时犯了一个错误。浏览器应该是数组的数组

还有另一个库可用于browserstack和guzzle:


我在方法上犯了一个错误。它应该是$client->createRequest,而不是$client->post 另外,我在传递数据时犯了一个错误。浏览器应该是数组的数组

还有另一个库可用于browserstack和guzzle:


在我的例子中,在options的参数中使用“json”,例如:

$client = new GuzzleHttp\Client(['base_url' => 'http://www.browserstack.com/']);
$request = $client->post('screenshots', [
    'headers' => ['Content-type' => 'application/json'],
    'auth' =>  ['username', 'access_key'],
    'json' => '{"browsers": [
                       {"os": "Windows", "os_version": "7", "browser_version": "8.0", "browser": "ie"},
                       {"os": "android", "os_version": "4.4", "device": "HTC One M8", "browser": "Android Browser"}
                ],
                "url": "http://www.lipsum.com"}'
        ]
    );

在我的例子中,在options的参数中使用“json”,例如:

$client = new GuzzleHttp\Client(['base_url' => 'http://www.browserstack.com/']);
$request = $client->post('screenshots', [
    'headers' => ['Content-type' => 'application/json'],
    'auth' =>  ['username', 'access_key'],
    'json' => '{"browsers": [
                       {"os": "Windows", "os_version": "7", "browser_version": "8.0", "browser": "ie"},
                       {"os": "android", "os_version": "4.4", "device": "HTC One M8", "browser": "Android Browser"}
                ],
                "url": "http://www.lipsum.com"}'
        ]
    );

你为我指明了正确的方向,谢谢你的文档链接你为我指明了正确的方向,谢谢你的文档链接