Can';是否从php发送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

我尝试从我的服务器发送JSON请求,如下所示:

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?