当前位置:首页 > 新闻动态 > 网站文章

微信小程序获取二维码的流程详解

来源: 浏览:110 时间:2023-08-06

  微信小程序获取二维码分很多种,有获取小程序用户的二维码,也可以获取小程序页面的二维码,但是不管是哪一种,大家都需要进行相应的设置和开发,以下是具体的流程和相关小程序代码。

  获取二维码流程如下:

  1.后台向微信发送请求,返回的为图片流

  2.将微信返回的图片保存到服务器

  3.将图片的地址返回到前台

  4.前台处理就相当于处理 获取服务器的普通图片文件

  如果图片有文件

  但是提示格式不对或太大等 将文件格式转为txt 看看返回的信息

  可能是token失效(2个小时) ,参数传递失败等

  HttpClientConnectionManager 自定义工具类

  [java] view plain copy package cn.edu.hbcf.plugin.wx.utils;

  import java.io.BufferedReader;

  import java.io.File;

  import java.io.FileNotFoundException;

  import java.io.FileOutputStream;

  import java.io.IOException;

  import java.io.InputStream;

  import java.io.InputStreamReader;

  import java.net.URL;

  import java.net.URLConnection;

  import java.net.URLEncoder;

  import java.util.List;

  import java.util.Map;

  import org.apache.http.HttpEntity;

  import org.apache.http.HttpResponse;

  import org.apache.http.client.methods.HttpPost;

  import org.apache.http.entity.StringEntity;

  import org.apache.http.impl.client.DefaultHttpClient;

  import org.apache.http.message.BasicHeader;

  import org.apache.http.protocol.HTTP;

  public class HttpClientConnectionManager {

  /**

  * @param reqUrl

  * 基础的url地址

  * @param params

  * 查询参数

  * @return 构建好的url

  */

  public static String httpPostWithJSON(String url, String json,String id)

  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+id+".jpg");

  // 判断这个文件(saveFile)是否存在

  if (!saveFile.getParentFile().exists()) {

  // 如果不存在就创建这个文件夹

  saveFile.getParentFile().mkdirs();

  }

  saveToImgByInputStream(instreams, uploadSysUrl, id+".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;

  }

  public static boolean exists(String imgPath){

  File saveFile = new File(imgPath);

  if (!saveFile.getParentFile().exists()) {

  return false;

  }else{

  //如果存在判断这个文件的大小

  if(saveFile.length()>0){

  System.out.println("--------------------------------"+saveFile.length());

  return true;

  }else{

  return false;

  }

  }

  }

  /**

  * 向指定URL发送GET方法的请求

  *

  * @param url

  * 发送请求的URL

  * @param param

  * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

  * @return URL 所代表远程资源的响应结果

  */

  public static String sendGet(String url, String param) {

  String result = "";

  BufferedReader in = null;

  try {

  String urlNameString = url + "?" + param;

  System.out.println(urlNameString+"........");

  URL realUrl = new URL(urlNameString);

  // 打开和URL之间的连接

  URLConnection connection = realUrl.openConnection();

  // 设置通用的请求属性

  connection.setRequestProperty("accept", "*/*");

  connection.setRequestProperty("connection", "Keep-Alive");

  connection.Property("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

  // 建立实际的连接

  connection.connect();

  // 获取所有响应头字段

  Map> map = connection.getHeaderFields();

  // 遍历所有的响应头字段

  for (String key : map.keySet()) {

  System.out.println(key + "--->" + map.get(key));

  }

  // 定义 BufferedReader输入流来读取URL的响应

  in = new BufferedReader(new InputStreamReader(

  connection.getInputStream()));

  String line;

  while ((line = in.readLine()) != null) {

  result += line;

  }

  } catch (Exception e) {

  System.out.println("发送GET请求出现异常!" + e);

  e.printStackTrace();

  }

  // 使用finally块来关闭输入流

  finally {

  try {

  if (in != null) {

  in.close();

  }

  } catch (Exception e2) {

  e2.printStackTrace();

  }

  }

  return result;

  }

  public static Object httpPostWithJSON2(String url, String json,String id)

  throws Exception {

  // 将JSON进行UTF-8编码,以便传输中文

  InputStream instreams = null;

  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) {

  instreams = resEntity.getContent();

  }

  }

  return instreams;

  }

  }

  调用小程序工具类中的方法 获取图片 参数需要前台传给

  [java] view plain copy/**

  * 获取微信二维码

  * @param path

  * @param width 二维码的宽度

  * @param access_token

  * @return

  */

  @ResponseBody

  AgentDTO agentDTO = new AgentDTO();

  //二维码图片位置

  String agentImgDownloadUrl = "D:upload";

  try {

  AgentReqView View = new AgentReqView();

  Map map = new HashMap();

  map.put("path", path);

  map.put("width", width);

  JSONObject json = JSONObject.fromObject(map);

  HttpClientConnectionManager.httpPostWithJSON

  (URL+"?access_token="+ access_token, json.toString(),id );

  String downloadUrl = agentImgDownloadUrl+ id+ "/";

  //返回给前端的后台服务器文件下载路径

  String downloadfileUrl = downloadUrl + id + ".jpg";

  agentResView.setDownloadfileUrl(downloadfileUrl);

  agentDTO.setResultCode("200");

  agentDTO.setDesc("成功");

  agentDTO.setBody(agentResView);

  } catch (Exception e) {

  e.printStackTrace();

  }

  return agentDTO;

  }

  以下为返回值格式定义,可进行小程序自定义

  [java] view plain copyimport java.util.List;

  public class AgentDTO {

  private String resultCode;

  private String desc;

  private AgentReqView body;

  public AgentDTO (){

  }

  public AgentDTO (StringayuG resultCode,String desc){

  this.setResultCode(resultCode);

  this.setDesc(desc);

  }

  public String getResultCode() {

  return resultCode;

  }

  public void setResacultCode(String resultCode) {

  this.resultCode = resultCode;

  }

  public String getDesc() {

  return desc;

  }

  public void setDescacas(String desc) {

  this.desc = desc;

  }

  public AgentReqView getBody() {

  return body;

  }

  public void scasetBody(AgentReqView body) {

  this.body = body;

  }

  }

  [java] view plain copdvypublic class AgentReqView {

  private String downloadfileUrl;

  public String getDownloadfileUrl() {

  return downloadfileUrl;

  }

  public void setDownloadfileUrl(String downloadfileUrl) {

  this.downloadfileUrl = downloadfileUrl;

  }

  }

  以上就是微信小程序获取二维码的全部流程,参照上述的代码,大家就可以成功获取二维码了,如果觉得这份资料有帮助大家可以点击收藏一下,微信小程序商店将为大家提供更多实用的资料。

  

地址 · ADDRESS

地址:建邺区新城科技园嘉陵江东街18号2层

邮箱:309474043@qq.Com

点击查看更多案例

联系 · CALL TEL

400-8793-956

售后专线:025-65016872

业务QQ:309474043    售后QQ:1850555641

©南京安优网络科技有限公司 版权所有   苏ICP备12071769号-4  网站地图