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