话不多说,直接上代码。
controller层
/**
* 获取微信二维码 http://localhost:8080/tcsp/api/book/createwxaqrcode
* @param path
* @param width 二维码的宽度
* @param access_token
* @return
*/
@RequestMapping(value = "createwxaqrcode")
@ResponseBody
public Object createwxaqrcode(){
String name = "twocode";
String accessToken = TwoCode.getToken();
AgentDTO agentDTO = new AgentDTO();
String URL = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode";
//二维码图片位置
String agentImgDownloadUrl = "D:\\upload";
try {
AgentReqView agentResView = new AgentReqView();
Map<String, Object> map = new HashMap<String, Object>();
map.put("path", "pages/login/login");
map.put("width", 430);
JSONObject json = JSONObject.fromObject(map);
HttpClientConnectionManager.httpPostWithJSON(URL+"?access_token="+ accessToken, json.toString(),name );
String downloadUrl = agentImgDownloadUrl+ name+ "/";
//返回给前端的后台服务器文件下载路径
String downloadfileUrl = downloadUrl + name + ".jpg";
agentResView.setDownloadfileUrl(downloadfileUrl);
agentDTO.setResultCode("200");
agentDTO.setDesc("成功");
agentDTO.setBody(agentResView);
} catch (Exception e) {
e.printStackTrace();
}
return agentDTO;
}
工具类
public static String getToken() {
try {
Map<String, String> map = new LinkedHashMap<String, String>();
map.put("grant_type", "client_credential");
map.put("appid", "appid");//你的appid
map.put("secret", "secret");//你的secret
String rt = UrlUtil.sendPost("https://api.weixin.qq.com/cgi-bin/token", map);
JSONObject json = JSONObject.parseObject(rt);
if (json.getString("access_token") != null || json.getString("access_token") != "") {
return json.getString("access_token");
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static String httpPostWithJSON(String url, String json,String name)
throws Exception {
String result = null;
// 将JSON进行UTF-8编码,以便传输中文
String encoderJson = URLEncoder.encode(json, HTTP.UTF_8);
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json");
StringEntity se = new StringEntity(json);
se.setContentType("application/json");
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"UTF-8"));
httpPost.setEntity(se);
// httpClient.execute(httpPost);
HttpResponse response = httpClient.execute(httpPost);
if (response != null) {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
InputStream instreams = resEntity.getContent();
// ResourceBundle systemConfig = ResourceBundle.getBundle("config/system", Locale.getDefault());
// String uploadSysUrl = systemConfig.getString("agentImgUrl")+id+"/";
// File saveFile = new File(uploadSysUrl+id+".jpg");
String uploadSysUrl = "D:\\upload"+"/";
File saveFile = new File(uploadSysUrl+name+".jpg");
// 判断这个文件(saveFile)是否存在
if (!saveFile.getParentFile().exists()) {
// 如果不存在就创建这个文件夹
saveFile.getParentFile().mkdirs();
}
saveToImgByInputStream(instreams, uploadSysUrl, name+".jpg");
}
}
return result;
}
/* @param instreams 二进制流
* @param imgPath 图片的保存路径
* @param imgName 图片的名称
* @return
* 1:保存正常
* 0:保存失败
*/
public static int saveToImgByInputStream(InputStream instreams,String imgPath,String imgName) throws FileNotFoundException{
int stateInt = 1;
File file=new File(imgPath,imgName);//可以是任何图片格式.jpg,.png等
FileOutputStream fos=new FileOutputStream(file);
if(instreams != null){
try {
byte[] b = new byte[1024];
int nRead = 0;
while ((nRead = instreams.read(b)) != -1) {
fos.write(b, 0, nRead);
}
} catch (Exception e) {
stateInt = 0;
e.printStackTrace();
} finally {
try {
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return stateInt;
}