【发布时间】:2016-10-04 12:24:14
【问题描述】:
我正在尝试将 json 格式的请求正文发送到 API。文档声明正文需要像这样格式化:
//Request body needs to the contain a JSON object in the following format:
{
"delete_list":[
"8fcd1d68c82dd39d65ef8ea9a7948bbe",
"8bca1d68c92dd39d65ef8ea9a7948bbe",
"8bca1d69c82d939d65ef8ea9a7948bbe",
"8bca1d69c82d939d65ef8ea9a7947bbe"
]
}
我尝试的代码似乎失败了,我不知道为什么。我已经尝试了很多调整,但似乎没有任何效果:
$del = array("delete_list" => "[8bca1d69c82d939d65ef8ea9a7947bbe]");
$j = json_encode($del);
$apiToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$httpHeadersArray = Array();
$httpHeadersArray[] = 'Authorization: key='.$apiToken;
$httpHeadersArray[] = 'Content-Type: application/json';
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $curlUrl);
#curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($j));
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeadersArray);
$res = curl_exec($ch);
echo "<pre>";
print_r($res);
echo "</pre>";
我从 API 返回的最终结果如下:
{"status":"failure","message":"JSON malformed"}
关于我在代码中做错了什么有什么建议吗?这将不胜感激。谢谢!
【问题讨论】:
-
尝试摆脱
http_build_query,因为它会编码重要的 JSON 位 -
$del = array("delete_list" => "[8bca1d69c82d939d65ef8ea9a7947bbe]");需要类似于:-$del = array("delete_list" => array("8bca1d69c82d939d65ef8ea9a7947bbe"));