在呼叫企業微信的API介面之前,需要自行撰寫HTTPS請求的方法,在這里用Java實作
釘釘API直接為我們準備好了HTTPS請求,只需導包即可,而企業微信需要自行實作
本文主要介紹,如何使用Java代碼,發起企業微信API支持的HTTPS請求,獲取access_token
目錄
一、撰寫HTTPS請求
二、獲取 access_token
一、撰寫HTTPS請求
首先創建一個類,實作 X509TrustManager 介面
import javax.net.ssl.*;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
public class WeChatUtils implements X509TrustManager {
/**
* 處理https GET/POST請求
* @param requestUrl 請求地址
* @param requestMethod 請求方法
* @param outputStr 引數
* @return
*/
public static String httpsRequest(String requestUrl,String requestMethod,String outputStr){
StringBuffer buffer=null;
try{
//創建SSLContext
SSLContext sslContext=SSLContext.getInstance("SSL");
TrustManager[] tm={new WeChatUtils()};
//初始化
sslContext.init(null, tm, new java.security.SecureRandom());;
//獲取SSLSocketFactory物件
SSLSocketFactory ssf=sslContext.getSocketFactory();
URL url=new URL(requestUrl);
HttpsURLConnection conn=(HttpsURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod(requestMethod);
//設定當前實體使用的SSLSoctetFactory
conn.setSSLSocketFactory(ssf);
conn.connect();
//往服務器端寫內容
if(null!=outputStr){
OutputStream os=conn.getOutputStream();
os.write(outputStr.getBytes("utf-8"));
os.close();
}
//讀取服務器端回傳的內容
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
return buffer.toString();
}
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}
原文CSDN鏈接:https://zwz99.blog.csdn.net/article/details/113845625
二、獲取 access_token
獲取access_token是呼叫企業微信API介面的第一步,相當于創建了一個登錄憑證,其它的業務API介面,都需要依賴于access_token來鑒權呼叫者身份,
因此開發者,在使用業務介面前,要明確access_token的頒發來源,使用正確的access_token,
請求方式: GET(HTTPS)
請求地址: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
corpid:每個企業都擁有唯一的corpid,獲取此資訊可在管理后臺“我的企業”-“企業資訊”下查看“企業ID”
corpsecret:secret是企業應用里面用于保障資料安全的“鑰匙”,每一個應用都有一個獨立的訪問密鑰,為了保證資料的安全,secret務必不能泄漏
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public static String getToken(){
String str= httpsRequest("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + "wwxxxxxxxxxxxxxxxx" + "&corpsecret=" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","GET",null);
JSONObject err = JSON.parseObject(str);
if(err.getString("errmsg").equals("ok")){
return err.getString("access_token");
}
return null;
}
呼叫getToken方法,即可獲得到最新的Token,用以呼叫企業微信各類API介面,
回傳結果
{
"errcode": 0,
"errmsg": "ok",
"access_token": "fhafhdsajhfjkshfjkshjkfsjkdfhjkahfkjahjfhajkfhajk",
"expires_in": 7200
}
方法回傳
fhafhdsajhfjkshfjkshjkfsjkdfhjkahfkjahjfhajkfhajk
附:fastjson maven
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.9</version>
</dependency>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/260978.html
標籤:其他
