欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信公眾號(hào)獲取access_token的方法實(shí)例分析

 更新時(shí)間:2019年10月25日 09:14:33   作者:游語  
這篇文章主要介紹了微信公眾號(hào)獲取access_token的方法,結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)微信公眾號(hào)獲取access_token的相關(guān)原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了微信公眾號(hào)獲取access_token的方法。分享給大家供大家參考,具體如下:

上一版需求做了微信公眾號(hào)開發(fā),秀了一波操作,也遇到了很多坑?,F(xiàn)在把微信公眾號(hào)一些基本的操作記錄一下。

微信公眾號(hào)獲取access_token  官方文檔地址

access_token是公眾號(hào)的全局唯一接口調(diào)用憑據(jù),我們和微信服務(wù)器進(jìn)行交互,服務(wù)器通過access_token判斷我們是誰(哪個(gè)公眾號(hào)服務(wù)的請(qǐng)求)。所以 我們?cè)陂_發(fā)過程中服務(wù)端拿到的access_token是一定不能顯式暴露給外部,否則將導(dǎo)致數(shù)據(jù)安全問題。別人拿到你的accessToken操作你的公眾號(hào)。access_token的有效期目前為2個(gè)小時(shí),過期需要再次獲取。

下面是一種獲取access_token方式

1.項(xiàng)目添加httpclient相關(guān)依賴,示例使用httpclient請(qǐng)求微信服務(wù)器,獲取微信返回結(jié)果。

<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
  <dependency>
   <groupId>org.apache.httpcomponents</groupId>
   <artifactId>httpclient</artifactId>
   <version>4.5.3</version>
  </dependency>
  <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
  <dependency>
   <groupId>org.apache.httpcomponents</groupId>
   <artifactId>httpcore</artifactId>
   <version>4.4.6</version>
  </dependency>

2.httpClientUtil類,網(wǎng)上隨手找的 試了一下本例的doget方法 沒有問題,其他的 暫不考慮

public class HttpClientUtil {
  public static String doGet(String url, Map<String, String> param) {
    // 創(chuàng)建Httpclient對(duì)象
    CloseableHttpClient httpclient = HttpClients.createDefault();
    String resultString = "";
    CloseableHttpResponse response = null;
    try {
      // 創(chuàng)建uri
      URIBuilder builder = new URIBuilder(url);
      if (param != null) {
        for (String key : param.keySet()) {
          builder.addParameter(key, param.get(key));
        }
      }
      URI uri = builder.build();
      // 創(chuàng)建http GET請(qǐng)求
      HttpGet httpGet = new HttpGet(uri);
      // 執(zhí)行請(qǐng)求
      response = httpclient.execute(httpGet);
      // 判斷返回狀態(tài)是否為200
      if (response.getStatusLine().getStatusCode() == 200) {
        resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        if (response != null) {
          response.close();
        }
        httpclient.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    return resultString;
  }
  public static String doGet(String url) {
    return doGet(url, null);
  }
  public static String doPost(String url, Map<String, String> param) {
    // 創(chuàng)建Httpclient對(duì)象
    CloseableHttpClient httpClient = HttpClients.createDefault();
    CloseableHttpResponse response = null;
    String resultString = "";
    try {
      // 創(chuàng)建Http Post請(qǐng)求
      HttpPost httpPost = new HttpPost(url);
      // 創(chuàng)建參數(shù)列表
      if (param != null) {
        List<NameValuePair> paramList = new ArrayList<>();
        for (String key : param.keySet()) {
          paramList.add(new BasicNameValuePair(key, param.get(key)));
        }
        // 模擬表單
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList,"utf-8");
        httpPost.setEntity(entity);
      }
      // 執(zhí)行http請(qǐng)求
      response = httpClient.execute(httpPost);
      resultString = EntityUtils.toString(response.getEntity(), "utf-8");
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        response.close();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
    return resultString;
  }
  public static String doPost(String url) {
    return doPost(url, null);
  }
  public static String doPostJson(String url, String json) {
    // 創(chuàng)建Httpclient對(duì)象
    CloseableHttpClient httpClient = HttpClients.createDefault();
    CloseableHttpResponse response = null;
    String resultString = "";
    try {
      // 創(chuàng)建Http Post請(qǐng)求
      HttpPost httpPost = new HttpPost(url);
      // 創(chuàng)建請(qǐng)求內(nèi)容
      StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
      httpPost.setEntity(entity);
      // 執(zhí)行http請(qǐng)求
      response = httpClient.execute(httpPost);
      resultString = EntityUtils.toString(response.getEntity(), "utf-8");
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        response.close();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
    return resultString;
  }
}

3.第三步就是簡單的測(cè)試代碼了

public class WeChatAccessTokenTest {
  public static void main(String[] args) {
    Map<String, String> params = new HashMap<>();
    // TODO: 2018/11/16 *號(hào)改成真實(shí)appid
    params.put("appid", "******");
    // TODO: 2018/11/16 *號(hào)改成真實(shí)secret
    params.put("secret", "******");
    params.put("grant_type", "client_credential");
    String response = HttpClientUtil.doGet("https://api.weixin.qq.com/cgi-bin/token", params);
    JSONObject accessTokenObject = JSONObject.parseObject(response);
    String accessToken = accessTokenObject.getString("access_token");
    Long expire = accessTokenObject.getLong("expires_in");
    System.out.println(accessToken);
  }
}

以上就是微信公眾號(hào)基礎(chǔ)卻比較重要的獲取access_token操作了!

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java字符與字符串操作技巧總結(jié)》、《Java數(shù)組操作技巧總結(jié)》、《Java數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Java編碼操作技巧總結(jié)》和《Java數(shù)據(jù)結(jié)構(gòu)與算法教程

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • java并發(fā)包JUC同步器框架AQS框架原文翻譯

    java并發(fā)包JUC同步器框架AQS框架原文翻譯

    發(fā)現(xiàn)了一篇JDK作者的論文《The?java.util.concurrent?Synchronizer?Framework》主要描述了作者對(duì)AbstractQueuedSynchronizer同步器框架的設(shè)計(jì)和實(shí)現(xiàn)。權(quán)威性毋庸置疑!自然需要拜讀一下,配上中文翻譯,希望大家能有所收獲
    2022-02-02
  • Java 8新的時(shí)間日期庫的20個(gè)使用示例

    Java 8新的時(shí)間日期庫的20個(gè)使用示例

    這篇文章主要介紹了Java 8新的時(shí)間日期庫的20個(gè)使用示例,需要的朋友可以參考下
    2015-04-04
  • SpringCloud?LoadBalancerClient?負(fù)載均衡原理解析

    SpringCloud?LoadBalancerClient?負(fù)載均衡原理解析

    LoadBalancerClient?是?SpringCloud?提供的一種負(fù)載均衡客戶端,Ribbon?負(fù)載均衡組件內(nèi)部也是集成了?LoadBalancerClient?來實(shí)現(xiàn)負(fù)載均衡,本文給大家深入解析?LoadBalancerClient?接口源碼,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • java反射簡單實(shí)例

    java反射簡單實(shí)例

    這篇文章主要介紹了java反射機(jī)制,以一個(gè)簡單實(shí)例形式分析了Java反射的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-02-02
  • Java詳細(xì)講解文件的讀寫操作方法

    Java詳細(xì)講解文件的讀寫操作方法

    文件讀寫主要依靠io流完成,流(Stream)是指一連串的數(shù)據(jù)(字符或字節(jié)),是以先進(jìn)先出的方式發(fā)送信息的通道,數(shù)據(jù)源發(fā)送的數(shù)據(jù)經(jīng)過這個(gè)通道到達(dá)目的地,按流向區(qū)分為輸入流和輸出流
    2022-04-04
  • 全面了解OAuth?2.0四種授權(quán)方式金三銀四無懼面試

    全面了解OAuth?2.0四種授權(quán)方式金三銀四無懼面試

    這篇文章主要介紹了全面了解OAuth?2.0四種授權(quán)方式金三銀四無懼面試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • hibernate-validator后端表單數(shù)據(jù)校驗(yàn)的使用示例詳解

    hibernate-validator后端表單數(shù)據(jù)校驗(yàn)的使用示例詳解

    這篇文章主要介紹了hibernate-validator后端表單數(shù)據(jù)校驗(yàn)的使用,hibernate-validator提供的校驗(yàn)方式為在類的屬性上加入相應(yīng)的注解來達(dá)到校驗(yàn)的目的,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • SpringBoot整合EasyExcel的完整過程記錄

    SpringBoot整合EasyExcel的完整過程記錄

    easyexcel是阿里巴巴旗下開源項(xiàng)目,主要用于Excel文件的導(dǎo)入和導(dǎo)出處理,下面這篇文章主要給大家介紹了關(guān)于SpringBoot整合EasyExcel的完整過程,需要的朋友可以參考下
    2021-12-12
  • JAVA通過Filter實(shí)現(xiàn)允許服務(wù)跨域請(qǐng)求的方法

    JAVA通過Filter實(shí)現(xiàn)允許服務(wù)跨域請(qǐng)求的方法

    這里的域指的是這樣的一個(gè)概念:我們認(rèn)為若協(xié)議 + 域名 + 端口號(hào)均相同,那么就是同域即我們常說的瀏覽器請(qǐng)求的同源策略。這篇文章主要介紹了JAVA通過Filter實(shí)現(xiàn)允許服務(wù)跨域請(qǐng)求,需要的朋友可以參考下
    2018-11-11
  • 一不小心就讓Java開發(fā)踩坑的fail-fast是個(gè)什么鬼?(推薦)

    一不小心就讓Java開發(fā)踩坑的fail-fast是個(gè)什么鬼?(推薦)

    這篇文章主要介紹了Java fail-fast,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評(píng)論