我正在尝试使用wp_remote_post
在外部后端注册用户。
我的wordpress代码:
$url = 'https://example.com/users/register/';
$response = wp_remote_post( $url, array(
'method' => 'POST',
'timeout' => 60,
'redirection' => 5,
'httpversion' => '1.0',
'blocking' => true,
'headers' => array(),
'body' => array( 'email' => $email,
'name' => $name,
'last_name' => $last_name,
'password' => $password),
'cookies' => array()
)
);
但我收到500错误:
[raw] => HTTP / 1.1 500内部服务器错误 服务器:nginx / 1.10.3(Ubuntu) 日期:2017年9月29日星期五17:31:14 GMT 内容类型:text / html 转移编码:分块 连接:关闭 X-Frame-Options:SAMEORIGIN
我不知道为什么。我用postman,curl和iOS App尝试了端点,它正在运行。所以,我认为问题是以某种方式使用Wordpress。可能是我从http
而不是https
提出请求吗?
这是nginx日志:
46.101.102.90 - - [29/Sep/2017:17:31:14 +0000] "POST /users/register/ HTTP/1.1" 500 38 "https://example.com/users/register/" "WordPress/4.8.2; http://www.lifecompanion.eu"
所以,请求即将到来,但不知何故它不起作用(我已经尝试'httpversion' => '1.1'
以防万一,但是也遇到了同样的错误。
也许有人尝试过这样做,或者可以告诉我一个最好的方法。
答案 0 :(得分:2)
似乎问题出在服务器端。如果您尝试使用application/x-www-form-urlencoded
发送数据,则它不喜欢它并返回500状态代码。但是,如果它multipart/form-data
或application/json
有效。当您使用wp_remote_post
并将HTTP协议设置为1.0时,您也不需要指定POST方法。
您可以尝试这样的事情:
$url = 'https://example.com/users/register/';
$response = wp_remote_post( $url, array(
'timeout' => 60,
'redirection' => 5,
'blocking' => true,
'headers' => array( 'Content-Type' => 'application/json' ),
'body' =>
json_encode(
array(
'email' => $email,
'name' => $name,
'last_name' => $last_name,
'password' => $password
)
),
'cookies' => array()
)
);