在中國天氣網的SmartWeather API 中key 的生成要用到php 的這個函數base64_encode(hash_hmac('sha1',$public_key ,$private_key,true));
而在java 中沒有hash_hmac 這個函數。但是我們也可以通過其他方式生成這個key.
<span style="white-space:pre"> </span>SecretKeySpec signingKey = new SecretKeySpec(private_key.getBytes(), "HmacSHA1");
byte[] rawHmac =null;
<span style="white-space:pre"> </span>Mac mac;
try {
mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
rawHmac = mac.doFinal(public_key.getBytes());
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
key=Base64.encodeBase64(rawHmac);
生成的key拼接到url 後面就可以獲得天氣數據了。
參考地址:http://www.cnblogs.com/aptdo2008/p/3566391.html