WP_REMOTE_POST发送空正文

时间:2021-01-30 作者:Mat.C

我用nodejs 我试图通过wordpress对其进行一些调用,所有请求都正常工作,但当我添加请求正文时,它被发送为空,我试图搜索问题所在,但没有找到任何有效的结果。

我是说如果我发送这个请求

$body = [
    \'name\'  => \'Pixelbart\',
    \'email\' => \'[email protected]\',
    "password" => "Pass#your!word"
];
 
$body = json_encode( $body, TRUE );

echo $body; // here the body is correctly populated

$res = wp_remote_post("http://localhost:3000/users",
  array( 
    \'headers\' => array( 
      \'Origin\' => "http://localhost"
    ),
    \'body\' => $body,
    \'method\'      => \'POST\',
    \'data_format\' => \'body\'
  )
);

在api方面,如果我尝试读取请求体,它是一个空JSON。因为我认为这是一个api问题,所以我尝试使用其他工具发送请求,但如果我使用postman以同样的方式发送请求,它就会正常工作。我错过什么了吗?我还试图删除所有插件和所有自定义导入,以便有一个清晰的环境,但同样的错误也发生了

[如果从活动wordpress主题发送,来自javascript的ajax请求也会失败]

1 个回复
SO网友:Mat.C

以下代码有效source.这个\'Content-Type\' => \'application/json\' 标题丢失导致问题

$url = \'myAPIURL HERE\';
$username = \'apiuser\';
$password = \'passwd\';
$headers = array( 
     \'Authorization\' => \'Basic \' . base64_encode( "$username:$password" ), 
     \'Content-Type\' => \'application/json\' 
);
$fields = array(
    \'body\' => json_encode(
        array(
         \'email\'     => \'[email protected]\',
         \'name\'      => \'Pixelbart\',
         \'password\' => \'Pass#your!word\'
        )
    ),
    \'headers\'     => $headers,
    \'method\'      => \'POST\',
    \'data_format\' => \'body\'
);

$response = wp_remote_post($url,$fields);

if ( is_wp_error( $response ) ) {
     $error_message = $response->get_error_message();
     echo "Something went wrong: $error_message";
} else {
     echo \'Response:<pre>\';
     print_r( $response );
     echo \'</pre>\';
}

相关推荐