欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

java 工具類---實現(xiàn)獲取小程序碼并返回圖片地址 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >

java 工具類---實現(xiàn)獲取小程序碼并返回圖片地址

發(fā)表時間:2020-9-25

發(fā)布人:葵宇科技

瀏覽次數(shù):112

java調(diào)用微信小程序服務(wù)器API獲取小程序碼

一、實現(xiàn)思路

1.登錄微信https://mp.weixin.qq.com獲取小程序AppID和AppSecret;
2.根據(jù)小程序AppID和AppSecret獲取accesstoken
3.調(diào)用小程序碼API接口:

接口地址:https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN

并添加post請求參數(shù)

4.請求成功,會直接返回圖片二進(jìn)制內(nèi)容
5.對返回的數(shù)據(jù)進(jìn)行處理,把返回的圖片 Buffer轉(zhuǎn)換成圖片并存入服務(wù)器,然后返回服務(wù)器圖片地址信息

二、java 獲取小程序碼工具類代碼實現(xiàn)

package com.njpp.wxxcx.util;

import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import com.alibaba.fastjson.JSONObject;
import com.njpp.wxxcx.core.common.App;
import com.njpp.wxxcx.core.common.ErrCode;
import com.njpp.wxxcx.core.common.Tool;
import com.njpp.wxxcx.util.redis.RedisManager;

/**
 * 微信小程序 工具類
 * @author Administrator
 *
 */
public class WxUtil {
	
	/**
	 * 獲取小程序全局唯一后臺接口調(diào)用憑據(jù)(access_token)
	 * @return
	 */
	public static String getWxAccessToken(){
		//從redis緩存中獲取AccessToken,有且未過期,直接返回;否則重新獲取
		String accessToken =RedisManager.get("accessToken");
		if(Tool.notEmpty(accessToken)){
			return accessToken;
		}
		//重新獲取accessToken,并存入redis
		String newToken = getAccessToken();
		//存入redis
		RedisManager.set("accessToken", newToken, 7000);
		return newToken;
	}
	/**
	 * 調(diào)用微信開放接口 獲取小程序全局唯一后臺接口調(diào)用憑據(jù)(access_token)
	 * @return
	 */
	public static String getAccessToken(){
		String APPID="wxc0fdede12b648f9a";
		String APPSECRET="83a90fa477b6929d316ec47cc166ff0d";
		String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+APPID+"&secret="+APPSECRET;
		HttpRequestUtil hru = new HttpRequestUtil();
		JSONObject json = hru.sendUrlGet(accessTokenUrl);
		String access_token = json.getString("access_token");
		if(Tool.isEmpty(access_token)){
			access_token="";
		}
		
		System.out.println("json:"+json.toString());
				
		return access_token;
	}
	

    
  
    /**
     * 調(diào)用微信開放接口wxacode.getUnlimited獲取小程序碼
     * 通過該接口生成的小程序碼,永久有效,數(shù)量暫無限制
     * @param sceneStr 參數(shù)
     * @param pageUrl 小程序頁面鏈接---不能攜帶參數(shù)(參數(shù)請放在scene字段里)
     * @param accessToken 小程序全局唯一后臺接口調(diào)用憑據(jù)
     * @return true:含敏感信息   false:正常
     */
    public static Map<String,Object> getWXAcode2(String sceneStr,String pageUrl) {
    	 Map<String, Object>  returnData= new HashMap<String, Object>();
    	 try {
			//獲取token  小程序全局唯一后臺接口調(diào)用憑據(jù)
			 String accessToken = getWxAccessToken();
			 URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+accessToken);
			 HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
			 // conn.setConnectTimeout(10000);//連接超時 單位毫秒
			 // conn.setReadTimeout(2000);//讀取超時 單位毫秒
			 // 發(fā)送POST請求必須設(shè)置如下兩行
			 httpURLConnection.setDoOutput(true); // 打開寫入屬性
			 httpURLConnection.setDoInput(true); // 打開讀取屬性
			 httpURLConnection.setRequestMethod("POST");// 提交方式
			 // 不得不說一下這個提交方式轉(zhuǎn)換!!真的坑。。改了好長時間!!一定要記得加響應(yīng)頭
			 httpURLConnection.setRequestProperty("Content-Type", "application/x-javascript; charset=UTF-8");// 設(shè)置響應(yīng)頭
			 // 獲取URLConnection對象對應(yīng)的輸出流
			 PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());
			 // 發(fā)送請求參數(shù)
			 JSONObject paramJson = new JSONObject();
			 paramJson.put("scene", sceneStr); // 你要放的內(nèi)容
			 paramJson.put("path", pageUrl);
			 paramJson.put("width", 280); //二維碼的寬度,單位 px,默認(rèn)430px,最小 280px,最大 1280px
			 paramJson.put("auto_color", false);//自動配置線條顏色,如果顏色依然是黑色,則說明不建議配置主色調(diào),默認(rèn) false
			 Map<String,Object> line_color = new HashMap<>();
             line_color.put("r", 0);
             line_color.put("g", 0);
             line_color.put("b", 0);
             paramJson.put("line_color", line_color);//auto_color 為 false 時生效,使用 rgb 設(shè)置顏色
			 paramJson.put("is_hyaline", false);//是否需要透明底色,為 true 時,生成透明底色的小程序

			 printWriter.write(paramJson.toString());
			 // flush輸出流的緩沖
			 printWriter.flush();
			 BufferedInputStream inputStream = new BufferedInputStream(httpURLConnection.getInputStream());
			 
			//小程序碼圖片文件夾位置
			//設(shè)置文件存儲路徑,可以存放在你想要指定的路徑里面
            String rootPath = "D:/mimi/upload/images/";
            Long res = new Date().getTime();
            String newFileName =res + ".png";
            // 新文件
            File newFile = new File(rootPath +File.separator+ newFileName);
            // 判斷目標(biāo)文件所在目錄是否存在
            if( !newFile.getParentFile().exists()) {
                // 如果目標(biāo)文件所在的目錄不存在,則創(chuàng)建父目錄
            	newFile.getParentFile().mkdirs();
            }
            
            //-------把圖片文件寫入磁盤 start ----------------
            FileOutputStream fos = new FileOutputStream(newFile);
            //寫入目標(biāo)文件
            byte[] buffer=new byte[1024*1024];
            int byteRead=0;
            //stream.read(buffer) 每次讀到的數(shù)據(jù)存放在 buffer 數(shù)組中
            while((byteRead=inputStream.read(buffer))!=-1){
            	//在 buffer 數(shù)組中 取出數(shù)據(jù) 寫到 (輸出流)磁盤上
            	fos.write(buffer, 0, byteRead);
            	fos.flush();
            }
            fos.close();
            inputStream.close();
            //-------把圖片文件寫入磁盤 end ----------------
            // 完整的url(圖片映射地址)
            
            String fileUrl = "http://localhost:80/mimi/upload/images/" + newFileName;//小程序碼保存路徑
            returnData.put("codeURL", fileUrl);
            returnData.put(ErrCode.STATE, ErrCode.SUCCESS);
            return  returnData;

		}  catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	returnData.put(ErrCode.MSG, "生成失敗");
        returnData.put(ErrCode.STATE, ErrCode.FAIL);
        return  returnData;    
    }
    
	public static void main(String[] args) {
		
	}
}

三、工具類調(diào)用

	/**
	 * 獲取小程序碼
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception 
	 */
	@RequestMapping(value = "/getWxQRCode", method = { RequestMethod.POST })
	public Map<String, Object> getWxQRCode(HttpServletRequest request,HttpServletResponse response) throws Exception {
		String sceneStr=String.valueOf(paramMap.get("scene"));
		String pageUrl=String.valueOf(paramMap.get("page"));
		//調(diào)用微信開放接口wxacode.getUnlimited獲取小程序碼
		return WxUtil.getWXAcode2(sceneStr, pageUrl);
	}

相關(guān)案例查看更多