微信公衆平臺整合百度天氣API

因爲本身閒着的時候寫了一個微信公衆平臺的小應用 也參考了不少別人的源碼 再此感謝那些被我參考過的大神們
html

本着開源的精神 http://git.oschina.net/bddiudiu/wechat_Spring 個人項目也開源了 大部分都是參考了 智雲同窗的項目 java

項目目前部署與新浪SEA  訪問地址  http://diuwx.sinaapp.com git


好了 很少說微信的這個項目 咱們來說一下 如何整合百度的API一塊兒進來 順便也給本身往後留下一些痕跡json


首先咱們查看百度車聯網的API頁面 咱們找到咱們須要的天氣接口 同時咱們也申請一個ak key 具體申請KEY這裏就不說了api

獲得KEY 以及 api的url和各類參數 咱們開始將百度的天氣接口整合進咱們的項目微信


百度的這個接口,咱們要在項目中模擬一次http提交.app

既然這樣 那咱們就看一下他的url提交地址微信公衆平臺

http://api.map.baidu.com/telematics/v3/weather?location=北京&output=json&ak=yourkey

看一下地址咱們就會看出來,這個url須要拼接3個參數.工具

location 咱們須要查詢的城市url

output 返回給咱們的數據格式

ak 咱們的 ak key

固然他還有別的參數 咱們這裏暫時不用.


好 知道了url以後咱們在項目中新建一個工具類 咱們就叫他baiduutil.java 

而後咱們新建3個參數

private static String api = "http://api.map.baidu.com/telematics/v3/weather?";
private static String output = "json";
private static String ak = "your key";

而後 咱們寫一個方法 就是向百度提交url 

public static String getSend(String str){
                //將傳進來的城市轉碼
		try {
			str = URLEncoder.encode(str, "utf-8");
		} catch (Exception e) {
			e.printStackTrace();
		}
		//拼接url
		StringBuffer buf = new StringBuffer();
		buf.append("location=");
		buf.append(str);
		buf.append("&output=");
		buf.append(output);
		buf.append("&ak=");
		buf.append(ak);
		String param = buf.toString();
                //這是接收百度API返回的內容
		String result = "";
		String urlName = api + param;
		URL realUrl;
		try {
			realUrl = new URL(urlName);
			// 打開和URL之間的鏈接
			URLConnection conn = realUrl.openConnection();
			conn.setDoInput(true);
			BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			
            String line = br.readLine();
            while (line != null) {
                result += line;
                line = br.readLine();
            }
            br.close();
            return result;	
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
		
	}

以上的代碼將會返回來一段json數據.固然若是你的output是xml你獲得的就是xml格式的.

下面咱們就須要解析這返回來的json數據

{
    "error":0,
    "status":"success",
    "date":"2014-05-09",
    "results":[
        {
            "currentCity":"\u5317\u4eac",
            "weather_data":[
                {
                    "date":"\u5468\u4e94(\u4eca\u5929, \u5b9e\u65f6\uff1a19\u2103)",
                    "dayPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/day\/yin.png",
                    "nightPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/night\/yin.png",
                    "weather":"\u9634",
                    "wind":"\u5fae\u98ce",
                    "temperature":"20 ~ 14\u2103"
                },
                {
                    "date":"\u5468\u516d",
                    "dayPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/day\/zhenyu.png",
                    "nightPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/night\/xiaoyu.png",
                    "weather":"\u9635\u96e8\u8f6c\u5c0f\u96e8",
                    "wind":"\u5fae\u98ce",
                    "temperature":"19 ~ 11\u2103"
                },
                {
                    "date":"\u5468\u65e5",
                    "dayPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/day\/xiaoyu.png",
                    "nightPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/night\/qing.png",
                    "weather":"\u5c0f\u96e8\u8f6c\u6674",
                    "wind":"\u5fae\u98ce",
                    "temperature":"19 ~ 10\u2103"
                },
                {
                    "date":"\u5468\u4e00",
                    "dayPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/day\/qing.png",
                    "nightPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/night\/qing.png",
                    "weather":"\u6674",
                    "wind":"\u5fae\u98ce",
                    "temperature":"28 ~ 14\u2103"
                }
            ]
        }
    ]
}

以上就是百度返回給咱們的json格式.

咱們使用Gson來解析.

首先新建3個類  

class Status{
    private String error;
    private String status;
    private String date;
    private List<Results> results;
}

class Results{
    private String currentCity;
    private List<Weather> weather_data;
}

class Weather{
    private String date;
    private String dayPictureUrl;
    private String nightPictureUrl;
    private String weather;
    private String wind;
    private String temperature;
}

並生成get/set方法.

而後 咱們使用Gson來解析 傳進來的JSON字符串是 json

Gson gson = new Gson();
Status status = gson.fromJson(json, Status.class);

而後下面就是本身去獲取 status裏面的內容 而後返回到 微信公衆平臺

相關文章
相關標籤/搜索