Guzzle无法通过shopware5进行认证



我正试图将以下工作HTTP_Request2代码移植到Guzzle 7查询shopware5 API

$request = new HTTP_Request2();
$request->setBody('{"limit": 500000}');
$request->setUrl($URL.'/customers');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setHeader('Accept-Encoding','gzip, deflate, br');
$request->setAuth($username, $apiKey, HTTP_Request2::AUTH_DIGEST);
$response = $request->send();

我尝试了以下操作,但是失败了,提示"无效或缺少授权">

$RESTClient = new Client();
$request = new Guzzle_request(
'GET',
$URL  .'/customers',
[
'body' => '{"limit": 500000}',
'decode_content' => 'gzip, deflate, br',
'auth' => [$username, $apiKey, 'digest']
]);
$response = $RESTClient->send($request);

你需要修改你的代码

use GuzzleHttpPsr7Request;
$client = new GuzzleHttpClient();
$headers = ['Accept-Encoding' => 'gzip, deflate, br'];
$body = '{"limit": 500000}';
$request = new Request('GET', $URL . '/customers', $headers, $body);
$response = $client->send($request, [
'verify' => false,
'auth' => [$username, $apiKey, 'digest']  
]);

由于Digest有md5,所以verify为false并不使它不安全,但我没有发现任何地方写过为什么,但看到Digest只在verify为false时有效。

你也可以继续使用decode_content,没有问题,虽然它是默认的true,所以如果我传递头,那么我猜没有问题。

最新更新