Maison php教程 php手册 php读取百度天气API Json数据

php读取百度天气API Json数据

Jun 06, 2016 pm 07:55 PM
api json php 天气 数据 百度 简单 读取

本文简单介绍如何利用百度的车联网API读到JSON数据 官方手册 http://developer.baidu.com/map/wiki/index.php?title=car/api/weather#.E8.BF.94.E5.9B.9E.E7.BB.93.E6.9E.9C 今天折腾了好几个小时才把百度API里的天气接口搞明白,说句实在的,百度也够坑的,

本文简单介绍如何利用百度的车联网API读到JSON数据

官方手册

http://developer.baidu.com/map/wiki/index.php?title=car/api/weather#.E8.BF.94.E5.9B.9E.E7.BB.93.E6.9E.9C

今天折腾了好几个小时才把百度API里的天气接口搞明白,说句实在的,百度也够坑的,我第一次试因为选的应用类型是服务器,怎么都验证不了,而且我选了sn验证白名单

第二次我直接用浏览器试了,结果成功读取到json数据,剩下再来解析....


直接上代码吧

<span style="font-size:18px;">

<title> 天气 </title>


<?php require("sn_caculation.php");

//获得查询城市
if ($_POST[&#39;city&#39;])
	echo $_POST[&#39;city&#39;];

$location = $_POST[&#39;city&#39;];
//经过urlcode编码
$location = urlencode($location);

$output = "json";

//设置查询模式
//@param $mode
//默认流浏览器模式
$mode = 0;
switch ($mode){
	case 0:
	$result = browser($output,$location);
	break;
	case 1:
	$result = server($output,$location);
	break;
}

function server($output,$location) {
//服务端(server)测试
	$ak = "xxxxxxx";
	$sk = "xxxxxxx;
	$url = "http://api.map.baidu.com/telematics/v3/weather?ak=%s&location=%s&output=%s&sn=%s";
	$querystring_arrays = array("ak" => $ak, "location" =&gt; $location, "output" =&gt; $output);</span>
Copier après la connexion
//百度sn算法
	$sn = caculateAKSN($ak, $sk, $url, $querystring_arrays);
	return sprintf($url, $ak, $location, $output, $sn);
}


function browser($output,$location){
//浏览器测试-----
	$ak = "xxxxxxxx";
	$url = "http://api.map.baidu.com/telematics/v3/weather?ak=%s&amp;location=%s&amp;output=%s";
	return sprintf($url, $ak, $location, $output);
}


//$template = http://api.map.baidu.com/telematics/v3/weather?location=%s&amp;output=%s&amp;ak=%s

$weather_contents = file_get_contents($result);
print_r(json_decode($weather_contents));
?&gt;



Copier après la connexion

我从另一处提交的城市,进来之后的操作就像上面这样,这里解释几个地方,ak就是百度应用里的app key,如果是服务器类型的,secret key,浏览器类型的没有,利用百度提供的sn算法进行加密,代码如下:

<?php /**
* @brief 计算SN签名算法
* @param string $ak access key
* @param string $sk secret key
* @param string $url url值,例如: /geosearch/nearby 不能带hostname和querstring,也不能带?
* @param array  $querystring_arrays 参数数组,key=>value形式。在计算签名后不能重新排序,也不能添加或者删除数据元素
* @param string $method 只能为'POST'或者'GET'
*/
function caculateAKSN($ak, $sk, $url, $querystring_arrays, $method = 'GET'){
    if ($method === 'POST'){
        ksort($querystring_arrays);
    }
    $querystring = http_build_query($querystring_arrays);
    return md5(urlencode($url.'?'.$querystring.$sk));
}
?&gt;
Copier après la connexion
这里看半天没看懂,url没有格式啊,啥意思啊,后来才反应过来,因为看了它...为啥会有两个不同的页面....

http://developer.baidu.com/map/index.php?title=lbscloud/api/appendix

请原谅我的智商。

location可以利用urlencode进行转码,免得出错,最后拿到完整的result,利用file_get_contents就可以得到数据了,这里已数组的格式输出的。。。

初学就是蛋精姐虑....哎,就到这了,希望能帮到大家



Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Date et heure de CakePHP

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Entrée de la version Web Deepseek Entrée du site officiel Deepseek Entrée de la version Web Deepseek Entrée du site officiel Deepseek Feb 19, 2025 pm 04:54 PM

Entrée de la version Web Deepseek Entrée du site officiel Deepseek

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Téléchargement de fichiers CakePHP

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

Discuter de CakePHP

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

Guide rapide CakePHP

recommandation d'outil IA recommandation d'outil IA Nov 29, 2024 am 11:08 AM

recommandation d'outil IA

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Comment configurer Visual Studio Code (VS Code) pour le développement PHP

See all articles