wp_remote_get 和 url 参数
wp_remote_get and url parameters
我正在尝试将 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 to GET the response but I would recommend you to use Guzzle PHP HTTP client 拨打电话。
您必须编译安装 Guzzle。
composer require guzzlehttp/guzzle:^7.0
我希望自动加载器 class 已加载。
安装后即可使用
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
。
我正在尝试将 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 to GET the response but I would recommend you to use Guzzle PHP HTTP client 拨打电话。
您必须编译安装 Guzzle。
composer require guzzlehttp/guzzle:^7.0
我希望自动加载器 class 已加载。
安装后即可使用
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
。