$url = 'http://api.map.baidu.com/geocoder/v2/';//37.863036
$longitude = number_format(doubleval($longitude), 6);//113.598909
$latitude = number_format(doubleval($latitude), 6);
$gps= $latitude . ','. $longitude;
$params =array('location' =>$gps,'pois' => 0,
);
$info= test2::get_contents($url, $params);
print_r($info);
}classtest2{private staticfunction get_contents($url, $param)
{
$baidu_key=test::test_key ;
$param['ak'] =$baidu_key;
$param['output'] = 'json';
$url= $url . '?' . http_build_query($param, '', '&');//echo $url;
$retry = 2;
$result=array();while ($retry > 0) {
$result= json_decode(self::curl_get($url), true);if (!empty($result) && isset($result['status']) && $result['status'] == 0) {return$result;
}if (!empty($result) && isset($result['status'])) {
$status= $result['status'];
}else{
$status= 'http_error:';
}
EdjLog::info("baidu_response retry status is" . $status.'params'.json_encode($param));
$retry--;
}
EdjLog::warning('request to baidu lbs api failed after retries');return$result;
}private static function curl_get($url, $milliseconds = 300)
{
$start_time= microtime(true);
$ch=curl_init();//这个参数很重要,设置这个才可以支持毫秒级的超时设置
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($ch, CURLOPT_USERAGENT, self::$useragent);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FAILONERROR,0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, self::$connecttimeout);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, $milliseconds);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_URL, $url);
$response=curl_exec($ch);
$http_error_code=curl_errno($ch);
curl_close($ch);
EdjLog::info("request to baidu lbs api, url is $url, cost time:" . (microtime(true) -$start_time));
EdjLog::info("baidu http_error:$http_error_code response is" . str_replace(PHP_EOL, '', $response));return$response;
}