Php 得到415个错误“;“不支持的媒体类型”;使用wp_远程_post时
我试图从WordPress向外部API发送POST请求(为CRM系统中的用户分配标签)。当我用卷发的时候,一切都很好。以下是cURL代码:Php 得到415个错误“;“不支持的媒体类型”;使用wp_远程_post时,php,wordpress,api,curl,Php,Wordpress,Api,Curl,我试图从WordPress向外部API发送POST请求(为CRM系统中的用户分配标签)。当我用卷发的时候,一切都很好。以下是cURL代码: 函数我的函数(){ $body=数组('tags'=>array(数组( '电子邮件'=>'xxx@gmail.com', '标记'=>'客户5' )) ); $curl=curl_init(); curl_setopt_数组($curl,数组( CURLOPT_URL=>“$api_URL”, CURLOPT_RETURNTRANSFER=>true, C
函数我的函数(){
$body=数组('tags'=>array(数组(
'电子邮件'=>'xxx@gmail.com',
'标记'=>'客户5'
))
);
$curl=curl_init();
curl_setopt_数组($curl,数组(
CURLOPT_URL=>“$api_URL”,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_编码=>“”,
CURLOPT_MAXREDIRS=>10,
CULLOPT_超时=>0,
CURLOPT_FOLLOWLOCATION=>true,
CURLOPT_HTTP_VERSION=>CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST=>“POST”,
CURLOPT_POSTFIELDS=>json_encode($body,true),
CURLOPT_HTTPHEADER=>数组(
“内容类型:应用程序/json”,
“用户代理:您的应用程序名称(www.yourapp.com)”,
“授权:基本xxxxxx”
),
));
$response=curl\u exec($curl);
curl_close($curl);
var_dump($response);
}
添加_操作('init','my_函数');
但后来我切换到使用wp\u remote\u post
,得到了“415-不支持的媒体类型”的响应
$body=array('tags'=>array(
排列(
'电子邮件'=>'xxx@gmail.com',
'标记'=>'客户5'
))
);
$headers=数组(
'内容类型'=>'应用程序/json',
“用户代理”=>“您的应用程序名称(www.yourapp.com)”,
“授权”=>“基本xxxxxx”,
);
$request=wp_remote_post($api_url',$arg);
$arg=数组(
'header'=>$headers,
'body'=>json_encode($body,true),
'方法'=>'发布',
“sslverify”=>错误,
);
回声';
打印(请求);
回声';
我尝试了很多修改(将关联数组格式更改为key:value对,将AddType
添加到htaccess
文件…),但没有任何效果。请帮帮我,我卡住了摘录自:
源服务器运行时发生415不支持的媒体类型错误
拒绝特定请求,因为资源的格式不受服务器的支持
用过。此不受支持的格式类型问题可能由以下原因引起:
在资源的内容类型
或内容编码
标题
在您的情况下,发生错误的可能性最大,因为您的远程请求发送了错误的内容类型
头-当HTTP方法为POST时,该头默认为application/x-www-form-urlencoded
是的,您确实在$headers
数组中包含了正确的内容类型
值。但不幸的是,在传递给wp\u remote\u post()
的$arg
数组中,您使用了错误的数组键-头
,实际上应该是头s
(请注意“s”)
因此,请使用标题
,而不要使用标题
,如下所示:
$api_url='your api url';
$body=数组(
'标记'=>数组(
排列(
'电子邮件'=>'xxx@gmail.com',
'标记'=>'客户5',
),
),
);
$headers=数组(
'内容类型'=>'应用程序/json',
“用户代理”=>“您的应用程序名称(www.yourapp.com)”,
“授权”=>“基本xxxxxx”,
);
$arg=数组(
'headers'=>$headers,//很好
//'header'=>$headers,//错误;即数组键('header')错误
“body”=>json_编码($body),
//“method”可以省略,因为您使用的是wp_remote_post()
'方法'=>'发布',
“sslverify”=>错误,
);
$request=wp\u remote\u post($api\u url,$arg);
//..如果响应仍然不好,那么这个的输出是什么:
var_dump($请求);