使用PHP curl发送json时防止双重编码

pu82cl6c  于 2023-11-20  发布在  PHP
关注(0)|答案(1)|浏览(96)

当我发送我的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字符串的双重编码?

ttisahbt

ttisahbt1#

我打电话

curl_setopt( $ch, CURLOPT_HTTPHEADER, array(...));

字符串
几次,并认为,每个头部被添加,但事实上只有最后一个头部被添加到调用。
您必须将所有头文件添加到一个数组中,并仅对CURLOPT_HTTPHEADER使用一次curl_setopt。
在本例中,jon头被覆盖,因此接收端不理解数据是JSON,而是将其解释为常规格式编码的数据,这意味着它正在查找a=b值。因此,它将整个JSON字符串作为具有空值({"{…}": ""})的对象中的键提供给您

相关问题