我有这个命令行cURL示例:
curl -X PUT -H "X-Auth-Token: $AUTH_TOKEN" \
-d "{\"data\":{\"name\":\"Device1 Callflow\", \"numbers\":[\"1001\"], \"flow\":{\"module\":\"device\",\"data\":{\"id\":\"$DEVICE_ID\"}}}}" \
http://ip.add.re.ss:8000/v2/accounts/$ACCOUNT_ID/callflows | python -mjson.tool
我的任务是将其转换为PHP函数,其中所需的值将传递到函数中:
function someFunc($ AUTH_TOKEN,$ ACCOUNT_ID,$ DEVICE_ID,$ numbers){}
通常,我使用这种代码:
function setLimits($auth_token, $accountID, $feature1_cnt, $feature2_cnt) {
$service_url = "http://ip.add.re.ss:8000/v2/accounts/$accountID/limits";
$data = '{"data":{"feature1": ' . $feature1_cnt . ',"feature2": ' . $feature2_cnt . '}}';
$ch = curl_init($service_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Auth-Token: $auth_token",'Content-Type: application/json', 'Content-Length: ' . strlen($data)));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if ($response === false) {
$info = curl_getinfo($ch);
curl_close($ch);
die('error occured during curl exec. Additional info: ' . var_export($info));
}
$decoded = json_decode($response);
if (isset($decoded->response->status) && $decoded->response->status == 'ERROR') {
die('error occured: ' . $decoded->response->errormessage);
}
return(true);
}
但是,对于特定的API调用,我需要将其作为服务URL传递:
http://ip.add.re.ss:8000/v2/accounts/ $ ACCOUNT_ID / callflows | python -mjson.tool
我该怎么做?
答案 0 :(得分:0)
首先,改变:
$data = '{"data":{"feature1": ' . $feature1_cnt . ',"feature2": ' . $feature2_cnt . '}}';
为:
$data = [
"data" => [
"feature1" => $feature1_cnt,
"feature2" => $feature2_cnt
]
];
您将输入JSON时出错,并且赢得很容易找到或修复。
json.tool [...]验证和漂亮打印:
PHP的JSON验证几乎只是检查json_decode()
是否返回NULL
,然后您可以检查json_last_error()
和json_last_error_msg()
是否有错误信息。它不健全。
您可以在"漂亮打印"中编码JSON。格式:
json_encode($foo, JSON_PRETTY_PRINT);
但我不能想到一个世俗的理由,为什么你会想要这样做,除非有人眼球会看到它。
最后,在回答你的问题时,我意识到我并不知道你会得到什么,你真的需要澄清为什么你认为你需要做任何事情你问过。 [除了验证之外,我想]