一个虚拟脚本,它与一些json一起响应。
<?php
$result['code'] = 200;
echo json_encode($result);
?>
但是,当我对此脚本进行 curl 调用时,尝试获取 json 响应,然后将其转换为数组。事情出了问题。
通常我做一个简单的json_decode($json),它给了我一个数组,但显然当我var_dump json_decode($json)
时,它给了我int(1)
作为响应。我只想从 json 中获取代码。
这是我的代码:
public function curlcall($username, $msg)
{
$url = 'someurl.php';
$fields = array('username' => $username, 'message' => $msg);
$fields_string = null;
foreach ($fields as $key => $value) {$fields_string .= $key . '=' . $value . '&';}
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo '-------------------------';
var_dump($result);
exit;
}
当我直接从 rest 客户端调用脚本时,它给了我完美的 json 响应。但是当我通过 curl 请求相同的 json 时,我在将该 json 转换为数组时没有得到所需的结果。
为了简单起见,我只是回声了一根弦,但当我var_dump
它时,它给了我int(1).
试试这个:
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //NOTICE this line, which says you want a response returned to the calling script
$result = curl_exec($ch);
curl_close($ch);
echo '-------------------------';
var_dump($result);