首页 > 解决方案 > WordPress wp_remote_retrieve_body() 返回空但邮递员返回值

问题描述

我遇到了 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'] 因为我发现喜欢保持良好的编码习惯。

标签: phpwordpress

解决方案


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

如果您设置'blocking' => true,您将得到响应。


推荐阅读