如何解决wp_remote_get 和 url 参数
我正在尝试将 API 与需要分页的 wp_remote_get 结合使用。
目前,我的 wordpress 插件通过以下方式调用 API
$response = wp_remote_get( "https://api.xyz.com/v1/products",array( 'timeout' => 10,'headers' => array(
'Authorization' => 'Bearer xyz','accept' => 'application/json','content-type' => 'application/json'
)
));
$body = wp_remote_retrieve_body( $response );
return json_decode($body);
现在,如果我将 URL 从 /products 更改为 /products?page_size=5&page=2,这在 Postman 和其他程序中运行良好,我不会收到响应。这是为什么?我查看了 wp_remote_get 的 API 文档,但没有弄清楚。
解决方法
通常您使用 curl command 来获取响应,但如果您要拨打多个电话,我建议您使用 Guzzle PHP HTTP client 来拨打电话。
您将需要 Compser 安装 Guzzle。
composer require guzzlehttp/guzzle:^7.0
我期待自动加载器类被加载。
安装后,您可以按如下方式使用。
use GuzzleHttp\Client;
$client = new Client(
[
// Base URI is used with relative requests.
'base_uri' => https://api.xyz.com/v1/,// You can set any number of default request options.
'timeout' => 10.0,]
);
$url = 'products';
$payload = array(
'page_size' => 5,'page' => 2,);
try {
$request = $client->request(
'GET',$url,[
'query' => $payload,]
);
$status = $request->getStatusCode();
$response = json_decode( $request->getBody() );
if ( 200 === $status ) {
echo $response;
}
} catch ( Exception $e ) {
echo $e;
}
您可以为其他查询更改 $url
和 $payload
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。