我的代码可以使用 cURL 但不能使用 wp_remote_request。
cURL 代码是:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer '.$bc_auth_token
),
));
$response = curl_exec($curl);
curl_close($curl);
wp_remote_request代码是:
$args = array(
'method' => 'GET',
'sslverify' => false,
'headers' => array(
'Authorization' => 'Bearer '.$bc_auth_token,
'Content-Type' => 'application/json')
);
$response = wp_remote_request($url, $args);
cURL 按预期返回数据。 wp_remote_request 返回以下内容:
(
[headers] => Requests_Utility_CaseInsensitiveDictionary Object
(
[data:protected] => Array
(
[content-type] => application/xml
[content-encoding] => gzip
[vary] => Accept-Encoding
[server] => Microsoft-HTTPAPI/2.0
[access-control-allow-headers] => Origin, X-Requested-With, Authorization
[access-control-allow-origin] => *
[access-control-allow-credentials] => true
[ms-correlation-x] => fc9da5c7-b168-4cbd-9246-68ac510a8b93
[x-content-type-options] => nosniff
[strict-transport-security] => max-age=31536000; includeSubDomains
[access-control-expose-headers] => ms-correlation-x
[date] => Tue, 08 Jun 2021 23:31:43 GMT
)
)
[body] => <error xmlns="http://docs.oasis-open.org/odata/ns/metadata"><code>RequestDataInvalid</code><message>Request data is invalid.</message></error>
[response] => Array
(
[code] => 400
[message] => Bad Request
)
[cookies] => Array
(
)
[filename] =>
[http_response] => WP_HTTP_Requests_Response Object
(
[response:protected] => Requests_Response Object
(
[body] => <error xmlns="http://docs.oasis-open.org/odata/ns/metadata"><code>RequestDataInvalid</code><message>Request data is invalid.</message></error>
[raw] => HTTP/1.1 400 Bad Request
)
)
(Transfer-Encoding: chunked
Content-Type: application/xml
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-HTTPAPI/2.0
Access-Control-Allow-Headers: Origin, X-Requested-With, Authorization
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
ms-correlation-x: fc9da5c7-b168-4cbd-9246-68ac510a8b93
x-content-type-options: nosniff
Strict-Transport-Security: max-age=31536000; includeSubDomains
Access-Control-Expose-Headers: ms-correlation-x
Date: Tue, 08 Jun 2021 23:31:43 GMT
Connection: close)
我已经尝试了很多方法,但我看不出 wp_remote_request 不起作用的任何原因。
有人有任何见解吗?
谢谢。
我最近也遇到了同样的事情。
wp_remote_request
向请求添加特殊的用户代理。例如"WordPress\\/6.2.2; http:\\/\\/your-site.com"
。
在我的例子中,外部 API 将拒绝该用户代理的请求。
我能够为请求设置不同的用户代理并回避这个问题。
wp_remote_request($url, [
'user-agent': null,
'headers' => [
'Authorization' => 'Bearer '.$bc_auth_token,
]
]);
/* can you please below updated code where i have used wp_remote_get function instead of wp_remote_request function */
$args = array(
'headers' => array(
'Authorization' => 'Bearer '.$bc_auth_token,
'Content-Type' => 'application/json')
)
);
$url= "your URL";
$response = wp_remote_get( $url, $args );
$response = json_decode($response['body'], true);