WordPress wp_remote_retrieve_body()返回空,但邮递员返回值

时间:2020-06-12 12:24:27

标签: php wordpress

我正在使用wp_remote_retrieve_body()函数遇到奇怪的行为。

发出发布请求时,我可以在POSTMan中正确看到响应。该API仅返回一个字符串值。

但是,由于某些原因,wordpress函数wp_remote_retrieve_body()无法正常工作。我将wp_remote_post()用于发布请求。 POST请求工作正常,但是wp_remote_retrieve_body()不返回正文内容。

我查看了食典并发现其实施方式

function wp_remote_retrieve_body(&$response) {
    if ( is_wp_error($response) || ! isset($response['body']) )
        return '';

    return $response['body'];
} 

我认为$ response必须有一个错误。以下是我的代码

$id_ref = 'noerror';
if ( is_wp_error($response) || ! isset($response['body']) ){
    $link_pos_id_ref = 'someerror';
}

我希望变量将自身更新为“ someerror”。它做了。因此,我进一步尝试深入探讨该问题-

$id_ref = 'noerror';
if ( is_wp_error($response)){
    $id_ref = 'weberror';
}

if(! isset($response['body']) ){
    $id_ref = 'isseterror';
} 

但是这一次,值没有改变。仍然是'noerror',所以我检查了$ response ['body']的值,发现它确实包含字符串!

我确认响应为200 OK。因此,在这一点上,我可以使用$ response ['body']来获取我的字符串值,但是对于如何投资此问题,我没有更多的想法。

API会返回一个简单的字符串而不是JSON,这可能很奇怪吗?我真的不想继续使用$ response ['body'],因为我发现自己想保持良好的编码习惯。

1 个答案:

答案 0 :(得分:0)

很可能您在请求 'blocking' => false 中使用了 args 参数,这使调用异步,因此不会返回响应。

如果您设置 'blocking' => true,您将收到回复。