Can';是否从php发送JSON请求?
我尝试从我的服务器发送JSON请求,如下所示:Can';是否从php发送JSON请求?,php,json,curl,Php,Json,Curl,我尝试从我的服务器发送JSON请求,如下所示: public function subscribe() { $arrData = array( 'name' => $name, 'user_id' => $user_id, 'merchant_reference' => $merchant_reference ); $ch = curl_init(env('MY_API')); # Setup r
public function subscribe() {
$arrData = array(
'name' => $name,
'user_id' => $user_id,
'merchant_reference' => $merchant_reference
);
$ch = curl_init(env('MY_API'));
# Setup request to send json via POST.
$data = json_encode($arrData);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
# Return response instead of printing.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
# Send request.
$result = curl_exec($ch);
curl_close($ch);
}
当我从浏览器中调用此函数时,我得到错误415
,
但是,当我从它的工作中调用它时,它会很好地返回正确的响应
有什么想法吗?据我所知,您没有将$arrData传递给订阅功能您忘记了设置选项
curl_setopt($ch, CURLOPT_POST, true);
还可以始终使用任何自己的TCP侦听器调试查询,如netcat
UPD:
发送请求后,检查响应状态代码:
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
这个问题就像@devpro在我的本地服务器中所说的,似乎我需要在我的本地服务器中更改一些配置,以允许发送JSON请求哪里定义了
$arrData
?在header和test中添加'Accept:application/JSON',
,和#设置通过POST发送json的请求。
如何?$arrData
不存在于subscribe
方法的作用域中。我添加了Accept:application/json
头,但仍然收到相同的错误415不支持的媒体类型
是否尝试将POST json转换为curl\u setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
?$arrData在subscribe中function@MohammadALRoOSH,您的代码,不考虑缺少<代码> CurLoptTURURL< /COD>选项,成功运行。那么,可能与此查询无关的415?