微信公衆號https封裝(java版)

  我本身在公司第一次接觸微信公衆號,有不少的不熟悉。查了不少的資料。看了微信開發的官方文檔。可是微信的官方文檔是php版的。可憐我php雖然學過一點。可是都交給了個人老師,深感慚愧。不過還好網絡上的一位大牛寫了java版的微信開發。其中的一個https封裝我感受有點繁瑣。又根據本身的能力和網上的相關例子該進了一下。但願對有須要的有一些幫助。大牛的博客連接:http://www.cnblogs.com/liuhongfeng/p/4846260.htmlphp

1.由於微信的一些接口的訪問是https的連接。證書的訪問是咱們須要解決的問題。咱們採用忽略證書,信任全部的證書來封裝一個方法;html

//https信任全部請求建立
	public static CloseableHttpClient createSSLClientDefault(){
	        try {
	             SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
	                 //信任全部
	                 public boolean isTrusted(X509Certificate[] chain,
	                                 String authType) {
	                     return true;
	                 }
	             }).build();
	             SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
	             return HttpClients.custom().setSSLSocketFactory(sslsf).build();
	         } catch (KeyManagementException e) {
	             e.printStackTrace();
	         } catch (NoSuchAlgorithmException e) {
	             e.printStackTrace();
	         } catch (KeyStoreException e) {
	             e.printStackTrace();
	         }
	        return  HttpClients.createDefault();
	    }

2.咱們根據微信的接口來封裝數據,java

url:咱們請求的url好比:json

// 菜單建立(POST) 限100(次/天)
    public static String menu_create_url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";api

method:get或者post微信

data:咱們post請求所要攜帶的數據請求,網絡

最後咱們返回的是json的數據格式。這樣就能夠進行https的請求了微信開發

/**
     * 發送Https請求並獲取結果
     * @param requestUrl
     * @param method
     * @param data
     * @return
     */
	public static JSONObject httpRequset(String url,String method,String data){
		CloseableHttpResponse responeOne=null;
		HttpUriRequest httpUriRequest=null;
		JSONObject jsonObject=null;
		HttpPost httpPost=null;
		StringBuffer stringBuffer=new StringBuffer();
		// 建立SSLContext對象,並使用咱們指定的信任管理器初始化
  	    CloseableHttpClient client=createSSLClientDefault();
  	    if(method.equals("GET")){
  	    	httpUriRequest=new HttpGet(url);
  	    }
  	    if(data!=null){
  	    	 httpPost=new HttpPost(url);
  	    	jsonObject=JSONObject.fromObject(data);
  	      	StringEntity entityString = new StringEntity(jsonObject.toString(),"utf-8");//解決中文亂碼問題
  	    	httpPost.setEntity(entityString);
  	    }
  	     try {if(httpUriRequest!=null){
  	    	responeOne=  client.execute(httpUriRequest);
  	     }else{
  	    	responeOne=  client.execute(httpPost);
  	     }
  	    	
  	    	responeOne.setHeader("Content-Type", "application/json");
  	    	HttpEntity entity=responeOne.getEntity();
  	    	InputStream	in = entity.getContent();
  	    	String jsonContent=IOUtils.toString(in, "utf-8");
  	    	jsonObject=JSONObject.fromObject(jsonContent);
			
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
  	    
  	    
		return jsonObject;
	}

謝謝你的觀看,但願能幫助到你。轉載請註明出處。app

相關文章
相關標籤/搜索