微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wp_remote_get 和 url 参数

如何解决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 举报,一经查实,本站将立刻删除。