java https请求 源码 微信

来源:互联网 发布:经典句子 知乎 编辑:程序博客网 时间:2024/06/12 01:04

public  static  JSONObject httpsRequest(String requestUrl,String requestMethod,String params){

JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();


try {
/**创建SSLContext对象,并用我们制定的管理对象初始化*/
TrustManager[] tm = {new MyX509TrustManager()};
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
/**从上述的SSLContext对象中获得 SSLSocketFactory*/
SSLSocketFactory ssf = sslContext.getSocketFactory();

URL url = new URL(requestUrl);
HttpsURLConnection httpsUrlConn = (HttpsURLConnection) url.openConnection();
            httpsUrlConn.setSSLSocketFactory(ssf);
            
            httpsUrlConn.setDoInput(true);
            httpsUrlConn.setDoOutput(true);
            httpsUrlConn.setUseCaches(false);
            httpsUrlConn.setRequestMethod(requestMethod);
            if("GET".equalsIgnoreCase(requestMethod)){
            httpsUrlConn.connect();
            }
          /**当有数据提交时*/
            if(null != params){
            OutputStream output =  httpsUrlConn.getOutputStream();
            /**设置编码格式,防止中文乱码*/
            output.write(params.getBytes("UTF-8"));
            output.close();
            }
/**将返回的输入流转换成字符*/
            InputStream  inputStream = httpsUrlConn.getInputStream();
            InputStreamReader isr = new InputStreamReader(inputStream, "UTF-8");
            BufferedReader   bufferedReader = new BufferedReader(isr);
            
            String str = null;
            while((str = bufferedReader.readLine())!=null){
            buffer.append(str);
            }
            bufferedReader.close();
            isr.close();
            inputStream.close();
            
            inputStream = null;
            httpsUrlConn.disconnect();
            jsonObject = JSONObject.fromObject(buffer.toString());
} catch (ConnectException  ce) {
logger.error("wechat connect is error ");
} catch (Exception e) {
logger.error("https request error:{}",e);
}
return  jsonObject;


/**
* 获取access_token
* @author vigor
* @param 凭证
* @param 密钥
* @return AccessToken
* */
public static AccessToken getAccessToken(String appid,String appsecret){
AccessToken accessToken = null;
String requestUrl = access_token_url.replace("APPID", appid).replace("APPSECRET", appsecret);
JSONObject jsonObject = httpsRequest(requestUrl, "GET", null);
/**如果请求成功*/
if(null != jsonObject){
try {
accessToken = new AccessToken();
accessToken.setExpriesIn(jsonObject.getString("expires_in"));
accessToken.setToken(jsonObject.getString("access_token"));
} catch (Exception e) {
accessToken = null;
logger.error("获取access_token is error. errorCode :{} and errorMsg{}",
jsonObject.getString("errcode"),jsonObject.getString("errmsg"));
}
}
return accessToken;
}

public static int ctreatMenu(Menu menu ,String accessToken){
int result = 0;
/**拼接创建菜单的地址*/
String url = menu_create_url.replace("ACCESS_TOKEN", accessToken);
/**将菜单对象转换成json字符串*/
String jsonMenu = JSONObject.fromObject(menu).toString();
System.out.println(jsonMenu);
/**调用接口创建菜单*/
JSONObject jsonObject = httpsRequest(url, "POST", jsonMenu);
if(jsonObject != null){
if(0 != jsonObject.getInt("errcode")){
result = jsonObject.getInt("errcode");
logger.error("创建菜单失败.errcode:{} and errmsg:{}" ,jsonObject.getInt("errcode"),jsonObject.getString("errmsg"));
}
}
return  result;
}
0 0
原创粉丝点击