一、微信獲取access_token接口簡介
1、請求:該請求是GET方式請求,所以要攜帶的參數都是附加到url后面傳遞給微信服務器。請求的url格式如下:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
其中,APPID與APPSECRET都我們開發的時候自己帳號申請的。
2、響應:返回數據都是json數據,格式如下:
正確的時候返回的數據: {"access_token":"ACCESS_TOKEN","expires_in":7200}
ACCESS_TOKEN:訪問token,expires_in為過期時間
錯誤的時候返回的數據: {"errcode":40013,"errmsg":"invalid appid"}
errcode,為錯誤代碼,errmsg為錯誤信息
具體api說明可查看文檔:http://mp.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96access_token 。
二、關於java代碼的調用
該接口可以在前台用頁面ajax調用,也可以在后台用java代碼調用。這里需要使用到apache的http組件httpcomponents-client,這里使用的版本為httpcomponents-client-4.2.1,下載地址為:http://hc.apache.org/downloads.cgi。需要使用到的jar文件如下:
三、代碼實現
1 package com.demo.test; 2 3 import org.apache.http.HttpEntity; 4 import org.apache.http.HttpResponse; 5 import org.apache.http.HttpStatus; 6 import org.apache.http.client.HttpClient; 7 import org.apache.http.client.methods.HttpGet; 8 import org.apache.http.impl.client.DefaultHttpClient; 9 import org.apache.http.util.EntityUtils; 10 11 import com.google.gson.JsonObject; 12 import com.google.gson.JsonParser; 13 14 public class Test 15 { 16 public static final String GET_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token";// 獲取access 17 // url 18 public static final String APP_ID = "wxa549b28c24cf341e"; 19 public static final String SECRET = "78d8a8cd7a4fa700142d06b96bf44a37"; 20 21 // 獲取token 22 public static String getToken(String apiurl, String appid, String secret) 23 { 24 String turl = String.format( 25 "%s?grant_type=client_credential&appid=%s&secret=%s", apiurl, 26 appid, secret); 27 HttpClient client = new DefaultHttpClient(); 28 HttpGet get = new HttpGet(turl); 29 JsonParser jsonparer = new JsonParser();// 初始化解析json格式的對象 30 String result = null; 31 try 32 { 33 HttpResponse res = client.execute(get); 34 String responseContent = null; // 響應內容 35 HttpEntity entity = res.getEntity(); 36 responseContent = EntityUtils.toString(entity, "UTF-8"); 37 JsonObject json = jsonparer.parse(responseContent) 38 .getAsJsonObject(); 39 // 將json字符串轉換為json對象 40 if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 41 { 42 if (json.get("errcode") != null) 43 {// 錯誤時微信會返回錯誤碼等信息,{"errcode":40013,"errmsg":"invalid appid"} 44 } 45 else 46 {// 正常情況下{"access_token":"ACCESS_TOKEN","expires_in":7200} 47 result = json.get("access_token").getAsString(); 48 } 49 } 50 } 51 catch (Exception e) 52 { 53 e.printStackTrace(); 54 } 55 finally 56 { 57 // 關閉連接 ,釋放資源 58 client.getConnectionManager().shutdown(); 59 return result; 60 } 61 } 62 63 public static void main(String[] args) throws Exception 64 { 65 System.out.println("=========1獲取token========="); 66 String accessToken = getToken(GET_TOKEN_URL, APP_ID, SECRET);// 獲取token 67 if (accessToken != null) 68 System.out.println(accessToken); 69 } 70 71 }
當token正常返回的時候會打印token,否則不會打印。