Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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中通过cURL验证我的帖子是否正确?_Php_Json_Bash_Curl - Fatal编程技术网

如何在PHP中通过cURL验证我的帖子是否正确?

如何在PHP中通过cURL验证我的帖子是否正确?,php,json,bash,curl,Php,Json,Bash,Curl,我有一个包含这些数据的示例json对象。我试图将这些数据存储在一个变量中,并通过curl POST $json = '{ "mac": "1234567890", "dns": "8.8.8.8,4.2.2.1", "acl_mode": 1 }'; $url = 'http://my-site.com/api'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Typ

我有一个包含这些数据的示例json对象。我试图将这些数据存储在一个变量中,并通过curl POST

$json = '{
    "mac": "1234567890",
    "dns": "8.8.8.8,4.2.2.1",
    "acl_mode": 1
}';

$url = 'http://my-site.com/api';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array('json' => $json)));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);

dd($result);

我的成绩是500分

{
    "status": 500,
    "error_code": 1005
}

  • 我设置卷发杆的方式是否错误
在终端中使用
curl
进行测试后,我们发现端点在没有密钥的情况下消耗整个
POST
有效负载

这是用于测试的

curl -X POST -d '{"mac": "1234567890","dns": "8.8.8.8,4.2.2.1","acl_mode": 1}'  http://mysite/api
因此,按原样发送
$json
负载,而不使用
json_encode
数组
封装

curl_setopt($ch, CURLOPT_POSTFIELDS, $json);

工作正常。

端点对
POST
有效负载有什么期望,我看到您
json_编码
一个
json
字符串数组这看起来不正确尝试这个
curl_setopt($ch,CURLOPT_POSTFIELDS,array('json'=>json))
要将实际的json字符串作为
POST
负载发送,请不要进行双重编码it@AlexAndrei我真的很感激你对这件事的关心。现在尝试您的建议。不确定CURLOPT_POSTFIELDS是否影响了问题,但CURLOPT_POSTFIELDS在这里没有任何意义。它应该是:
curl_setopt($ch,CURLOPT_POSTFIELDS,array('json'=>$json))
另外,请确保
内容类型
标题没有问题。我知道这已经解决,但您可以始终使用httpbin.org测试您的HTTP请求。对于此示例,您可以将其发布到