Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 得到415个错误“;“不支持的媒体类型”;使用wp_远程_post时_Php_Wordpress_Api_Curl - Fatal编程技术网

Php 得到415个错误“;“不支持的媒体类型”;使用wp_远程_post时

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

我试图从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,
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($请求);