Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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发布JSON_Php_Json_Curl - Fatal编程技术网

使用PHP CURL发布JSON

使用PHP CURL发布JSON,php,json,curl,Php,Json,Curl,我的任务是发布到只接受JSON的API。我使用PHP的CURL来实现这一点 我以前在API上发布过,没有任何问题,但从来没有发布过JSON,这是我不熟悉的东西,我曾尝试自己研究并解决这个问题,但我没有任何运气 当我与我试图发帖的公司的某个人交谈时,我被告知我的服务器正在攻击他们的服务器,唯一的错误是我的帖子正文没有正确格式化JSON。。(这家公司没有人知道php:(因此没有帮助) 这是我的密码: $jarr = array("ProviderID" => "L005A", "FirstNa

我的任务是发布到只接受JSON的API。我使用PHP的CURL来实现这一点

我以前在API上发布过,没有任何问题,但从来没有发布过JSON,这是我不熟悉的东西,我曾尝试自己研究并解决这个问题,但我没有任何运气

当我与我试图发帖的公司的某个人交谈时,我被告知我的服务器正在攻击他们的服务器,唯一的错误是我的帖子正文没有正确格式化JSON。。(这家公司没有人知道php:(因此没有帮助)

这是我的密码:

$jarr = array("ProviderID" => "L005A", "FirstName" => $first, 
           "LastName" => $last, "PhoneNumber" => $PhoneNumber, 
           "PhoneNumberType" => $PhoneNumberType);

$content = json_encode($jarr);

$curl_handle = curl_init("URL Im posting to");
 curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
'Accept: application/json;charset=utf-8',
    'Content-Type: application/json;charset=utf-8',
    'Expect: 100-continue',
    'Connection: Keep-Alive'));
    curl_setopt($curl_handle, CURLOPT_HEADER, 1);
    curl_setopt($curl_handle, CURLOPT_POST, 0);
    curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $content);
    curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, 0);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    $first = curl_exec($curl_handle);
    curl_close($curl_handle);
    echo "Result ";
    echo $first;
根据提供给我的文档,我必须遵循的唯一参数是:
方法:邮寄

标题:
接受:application/json;charset=utf-8
内容类型:application/json;charset=utf-8
期望值:100继续
连接:保持活动状态

当前,当我执行脚本时,我得到一个返回值:

结果HTTP/1.1 100继续HTTP/1.1 400错误请求缓存控制: 无缓存Pragma:无缓存内容类型:application/json; charset=utf-8过期:-1台服务器:Microsoft IIS/7.5 X-AspNet-Version: 4.0.30319 X-Powered-By:ASP.NET日期:2012年11月1日星期四15:43:18 GMT内容长度:26{“record.ProviderID”:[“”]

所以400错误是因为我的身体没有正确格式化。我的问题是,我应该如何格式化我需要以正确的JSON格式发送的数据

从我所读到的内容来看,这段代码应该可以做到这一点,但它没有:

$jarr = array("ProviderID" => "L005A", "FirstName" => $first,
           "LastName" => $last, "PhoneNumber" => $PhoneNumber,
           "PhoneNumberType" => $PhoneNumberType);

$content = json_encode($jarr);

我也遇到了同样的问题。调试后,发现在发送JSON字符串时,不引用或双引用整数值是罪魁祸首。您需要将双引号整数值作为字符串发送

例如:

这是行不通的

但是

会有用的

我一发现问题的根本原因,就会立即更新。如果有人知道,请尽快更新


编辑:URL编码解决了这个问题。我希望它也能解决您的问题。

在您的服务器上创建一个页面进行测试,这将响应响应并尝试使用
json\u decode()
解析它。您将很快看到您的请求有什么问题。
{"PhoneNumber":9876543210}
{"PhoneNumber":"9876543210"}
{"PhoneNumber":"N_9876543210"}