当我发送我的json编码数组通过
<?php
$data=array("Arzt"=>array("Kundennummer"=>"",
"Praxisname"=>"Praxis XY",
"Vorname"=>"Test",
"Nachname"=>"Test",
# ...
));
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Authorization: Basic MTIzMTIzMS1CbGltdXM6clVja20yaVJxT0V2Y1ZTAb1IQUI='));
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($data));
$result = curl_exec($ch);
字符串
当CURL发送这个消息时,它到达服务器的编码如下(webservice log):
{"{\"Arzt\":{\"Kundennummer\":\"\",\"Praxisname\":\"Praxis XY\",\"Vorname\":\"Test\",\"Nachname\": .........
型
但预期的是:
{"Arzt":{"Kundennummer":"","Praxisname":"Praxis XY","Vorname":"Test","Nachname": ..........
型
如何防止PHP curl中JSON字符串的双重编码?
1条答案
按热度按时间ttisahbt1#
我打电话
字符串
几次,并认为,每个头部被添加,但事实上只有最后一个头部被添加到调用。
您必须将所有头文件添加到一个数组中,并仅对CURLOPT_HTTPHEADER使用一次curl_setopt。
在本例中,jon头被覆盖,因此接收端不理解数据是JSON,而是将其解释为常规格式编码的数据,这意味着它正在查找
a=b
值。因此,它将整个JSON字符串作为具有空值({"{…}": ""})
的对象中的键提供给您