精华内容
参与话题
问答
  • images — 存放项目图片文件 pages — 存放项目页面文件 utils — 存放项目页面文件 开发环境: 微信web开发者工具 v0.11.112301 项目截图: https://www.getweapp.com/project?projectId=583ecd66e8ff074c22472f4d...
  • 详细介绍小程序开发所涉及的内容和关键技术,帮助开发者快速掌握小程序开发,主要包括界面、网络、本地数据及缓存、设备硬件、微信开发接口、媒体、后端开发与设计。 第四章介绍了所有API的使用,主要包括网络、...
  • 项目加了APPID,准备进行手机预览的测试 这里说一下,在开发小程序时尽量把图片放到自己的服务器上,因为小程序在上传和预览时都有编译包的限制,没有算过,大概是1M,不知道以后会不会增加 点预览会生成一个...
  • 项目加了APPID,准备进行手机预览的测试 这里说一下,在开发小程序时尽量把图片放到自己的服务器上,因为小程序在上传和预览时都有编译包的限制,没有算过,大概是1M,不知道以后会不会增加 点预览会生成一个...

    微信小程序的文档中明确说明了所有的请求是必须使用https的,以没用过https,由于小程序,不得不接触到https,研究了好长时间把tomcat配置好了https。然后用开发者工具测试是否能请求到数据,发现能获取到很开心。
    后来是注册了小程序,在小程序后台也进行了设置,见下图
    在这里插入图片描述
    给项目加了APPID,准备进行手机预览的测试
    在这里插入图片描述
    这里说一下,在开发小程序时尽量把图片放到自己的服务器上,因为小程序在上传和预览时都有编译包的限制,没有算过,大概是1M,不知道以后会不会增加

    点预览会生成一个二维码,通过微信扫描二维就可以这个小程序了,进去之后准备请求数据的测试,发现手机上预览的小程序不发起请求,这是什么原因呢,开发者工具里是可以请求到的啊,为什么到手机上不行了呢。

    请求的域名都是跟后台设置的一样,确认了好几遍,后来想到是不是tomcat配置的证书不正确,因为我也是第一次配置和使用HTTPS,后来就研究了两天tomcat配置https,每次都是开发者工具能请求到,手机预览请求不到,后来觉得应该不是tomcat配置的问题。但又不知道什么原因,就进小程序QQ群里请求帮助,最终得到了提示,发现了问题所以。

    问题的解决方法:

    由于微信后台设置安全域名时,不可以添加域名,见下图(图中说出不支持IP地址及端口号)
    在这里插入图片描述
    而当时我配置tomcat的https时,我用的是默认的8443,这样在请求时是需要在域名后面加上:8443端口号的。这就导致了一个问题,微信小程序后台没有加端口号,我在写请求地址时加了端口号8443(因为tomcat设置https时用的8443端口号),这样两个地方的域名是不一致的,就出现了请求域名不一致的错误,出现了手机预览不发送请求的问题。

    解决方法是在配置https时,要使用443端口,因为使用443端口,在写域名时是可以省略的。就像80端口可以不写一样

    为什么域名不一致开发者工具就能请求到数据呢,应该是因为开发者工具没有验证请求的域名和微信小程序设置的rquest合法域名是否一致的操作,所以开发者工具就能请求的到,而且手机中有这一步操作的,所以手机不能成功请求。

    最后说明!自己生成的证书不可以使用,在本地可以请求到数据,但手机上是请求不到的

    ————————————————
    版权声明:本文为CSDN博主「胡子拉碴丶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wsadzxcleg/article/details/53227492

    展开全文
  • 微信小程序的文档中明确说明了所有的请求是必须使用https的,以没用过https,由于小程序,不得不接触到...给项目加了APPID,准备进行手机预览的测试 这里说一下,在开发小程序时尽量把图片放到自己的服务器上,因为

    微信小程序的文档中明确说明了所有的请求是必须使用https的,以没用过https,由于小程序,不得不接触到https,研究了好长时间把tomcat配置好了https。然后用开发者工具测试是否能请求到数据,发现能获取到很开心。

    后来是注册了小程序,在小程序后台也进行了设置,见下图

    项目加了APPID,准备进行手机预览的测试

    里说一下,在开发小程序时尽量把图片放到自己的服务器上,因为小程序在上传和预览时都有编译包的限制,没有算过,大概是1M,不知道以后会不会增加

    点预览会生成一个二维码,通过微信扫描二维就可以这个小程序了,进去之后准备请求数据的测试,发现手机上预览的小程序不发起请求,这是什么原因呢,开发者工具里是可以请求到的啊,为什么到手机上不行了呢。

    请求的域名都是跟后台设置的一样,确认了好几遍,后来想到是不是tomcat配置的证书不正确,因为我也是第一次配置和使用HTTPS,后来就研究了两天tomcat配置https,每次都是开发者工具能请求到,手机预览请求不到,后来觉得应该不是tomcat配置的问题。但又不知道什么原因,就进小程序QQ群里请求帮助,最终得到了提示,发现了问题所以。

    问题的解决方法:

    由于微信后台设置安全域名时,不可以添加域名,见下图(图中说出不支持IP地址及端口号)

    而当时我配置tomcat的https时,我用的是默认的8443,这样在请求时是需要在域名后面加上:8443端口号的。这就导致了一个问题,微信小程序后台没有加端口号,我在写请求地址时加了端口号8443(因为tomcat设置https时用的8443端口号),这样两个地方的域名是不一致的,就出现了请求域名不一致的错误,出现了手机预览不发送请求的问题。

    解决方法是在配置https时,要使用443端口,因为使用443端口,在写域名时是可以省略的。就像80端口可以不写一样

    为什么域名不一致开发者工具就能请求到数据呢,应该是因为开发者工具没有验证请求的域名和微信小程序设置的rquest合法域名是否一致的操作,所以开发者工具就能请求的到,而且手机中有这一步操作的,所以手机不能成功请求。

    最后说明!自己生成的证书不可以使用,在本地可以请求到数据,但手机上是请求不到的


    展开全文
  • 鉴于市场上用户的手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作...
  • CRMEB微信开发10群(862316758)3000人群可 CRMEB微信开发11群(824195682)2000人群可 CRMEB微信开发12群(1025263163)2000人群可 CRMEB官方二开交流群(943955364)2000人群可 导航栏目 前端下载 | 使用...
  • 开放:基于dotNET core,完全响应跨平台开源架构,配合微软件的全产业链生产线,从而具备从OS操作系统、数据库操作系统、开发工具、云计算、扩展或办公体系完整的生态支持(即开发商所提供的网站解决方案从源上支持...
  • Anka - 渐进式小程序开发工具集,提供通用的开发函数库及组件 WeAppBunXin - 微信小程序开发之影分身术,一套代码生成多个小程序 miniprogram-build - 小程序命令行编译工具(支持typescript,原生npm,资源文件压缩....
  • Active4j可以应用在任何J2EE的项目开发中,尤其适合企业信息管理系统(MIS),企业办公系统(OA),客户关系管理系统(CRM),内容管理系统(CMS)等。 技术文档 讨论群:qq群①:203802692 qq群②:773872959 ...
  • 弃用(可参考)toasts2:丰富多彩的Toastupdateapk:XML配置升级APKuploadpic:最强微信图片上传(无bug版 修改了loaderManager两次finish的问题)usersdk:登录回调处理逻辑跳转widget: 1.AlertView:仿IOS弹窗 2...
  • 开发工具 工具 说明 官网 IDEA 开发IDE https://www.jetbrains.com/idea/download RedisDesktop redis客户端连接工具 https://github.com/qishibo/AnotherRedisDesktopManager Robomongo mongo客户端连接...
  • 微服务token错误失效

    2020-11-30 13:58:40
    问题无法获取小程序二维码? 我的问题:wxAccessToken接口用于token刷新,40...获取图片的接口,其中了流。微信小程序 唯一标识,和秘钥在自己的公司开发公众号平台上查看 获取token 工具类 package com.zfbgt

    问题无法获取小程序二维码?

    我的问题:wxAccessToken接口用于token刷新,40分钟一次没有问题,但是如果项目关闭40分钟以上,定时任务就废掉了,两种解决方式

    	还有其他方式请大佬们留言学习学习,谢谢
    

    1,主动调用那个借口刷新借口

    2、等待40分钟,等待定时任务自己执

    生成二维码:测试工具:获取appid,appsecret,利用工具:
    https://mp.weixin.qq.com/debug/

    自己定义的token是直接在微信官网中获取token

    在这里插入图片描述

    获取图片的接口,其中加了流。微信小程序

    在这里插入图片描述

    唯一标识,和秘钥在自己的公司开发公众号平台上查看

    在这里插入图片描述

    获取token 工具类

    package com.zfbgt.complaint.api.sso.utils;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.utils.URIBuilder;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.URI;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    
    @Slf4j
    public class UrlUtil {
    
        private final Logger LOG = LogManager.getLogger(this.getClass());
    
    
        /**
         * 向指定 URL 发送POST方法的请求
         *
         * @param url 发送请求的 URL
         * @param
         * @return 所代表远程资源的响应结果
         */
        public static String sendPost(String url, Map<String, ?> paramMap) {
            PrintWriter out = null;
            BufferedReader in = null;
            String result = "";
    
            String param = "";
            Iterator<String> it = paramMap.keySet().iterator();
    
            while (it.hasNext()) {
                String key = it.next();
                param += key + "=" + paramMap.get(key) + "&";
            }
    
            try {
                URL realUrl = new URL(url);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 设置通用的请求属性
                conn.setRequestProperty("accept", "*/*");
                conn.setRequestProperty("connection", "Keep-Alive");
                conn.setRequestProperty("Accept-Charset", "utf-8");
                conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 发送POST请求必须设置如下两行
                conn.setDoOutput(true);
                conn.setDoInput(true);
                // 获取URLConnection对象对应的输出流
                out = new PrintWriter(conn.getOutputStream());
                // 发送请求参数
                out.print(param);
                // flush输出流的缓冲
                out.flush();
                // 定义BufferedReader输入流来读取URL的响应
                in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            //使用finally块来关闭输出流、输入流
            finally {
                try {
                    if (out != null) {
                        out.close();
                    }
                    if (in != null) {
                        in.close();
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
            return result;
        }
    
    
        public static String doGet(String url, Map<String, String> param) {
            // 创建Httpclient对象
            CloseableHttpClient httpclient = HttpClients.createDefault();
    
            String resultString = "";
            CloseableHttpResponse response = null;
            try {
                // 创建uri
                URIBuilder builder = new URIBuilder(url);
                if (param != null) {
                    for (String key : param.keySet()) {
                        builder.addParameter(key, param.get(key));
                    }
                }
                URI uri = builder.build();
                // 创建http GET请求
                HttpGet httpGet = new HttpGet(uri);
                // 执行请求
                response = httpclient.execute(httpGet);
                // 判断返回状态是否为200
                if (response.getStatusLine().getStatusCode() == 200) {
                    resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (response != null) {
                        response.close();
                    }
                    httpclient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return resultString;
        }
    
        public static String doPost(String url, Map<String, Object> param) {
            // 创建Httpclient对象
            CloseableHttpClient httpClient = HttpClients.createDefault();
            CloseableHttpResponse response = null;
            String resultString = "";
            try {
                // 创建Http Post请求
                HttpPost httpPost = new HttpPost(url);
                // 创建参数列表
                if (param != null) {
                    List<NameValuePair> paramList = new ArrayList<>();
                    for (String key : param.keySet()) {
                        paramList.add(new BasicNameValuePair(key, (String) param.get(key)));
                    }
                    // 模拟表单
                    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
                    httpPost.setEntity(entity);
                }
                // 执行http请求
                response = httpClient.execute(httpPost);
                resultString = EntityUtils.toString(response.getEntity(), "utf-8");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return resultString;
        }
    
        public static HttpEntity PostRow(String token,String path) throws IOException {
            String url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token="
                    + token;
            String json = "{\"path\":\""+path+"\"}";
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost post = new HttpPost(url);
            StringEntity postingString = new StringEntity(json);// json传递
            post.setEntity(postingString);
            post.setHeader("Content-type", "application/json");
            HttpResponse response = httpClient.execute(post);
            return response.getEntity();
    
        }
        public static String sendPost(String url, String param) {
            PrintWriter out = null;
            BufferedReader in = null;
            String result = "";
            try {
                URL realUrl = new URL(url);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 设置通用的请求属性
                conn.setRequestProperty("accept", "*/*");
                conn.setRequestProperty("connection", "Keep-Alive");
                conn.setRequestProperty("user-agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 发送POST请求必须设置如下两行
                conn.setDoOutput(true);
                conn.setDoInput(true);
                // 获取URLConnection对象对应的输出流
                out = new PrintWriter(conn.getOutputStream());
                // 发送请求参数
                out.print(param);
                // flush输出流的缓冲
                out.flush();
                // 定义BufferedReader输入流来读取URL的响应
                in = new BufferedReader(
                        new InputStreamReader(conn.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送 POST 请求出现异常!"+e);
                e.printStackTrace();
            }
            //使用finally块来关闭输出流、输入流
            finally{
                try{
                    if(out!=null){
                        out.close();
                    }
                    if(in!=null){
                        in.close();
                    }
                }
                catch(IOException ex){
                    ex.printStackTrace();
                }
            }
            return result;
        }
    
        public static HttpEntity PostCircular(String token,String path,String usrId) throws IOException {
            log.info("PostCircular请求值:[{}]...[{}]..",path,usrId);
            String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="
                    + token;
            //  String json = "{\"path\":\""+path+"\"}";
            String json = "{\n" +
                    " \"path\":\""+path+"\",\n" +
                    " \"scene\":\""+usrId+"\",\n" +
                    " \"is_hyaline\":true,\n" +
                    "\"line_color\": {\"r\":255,\"g\":255,\"b\":255}\n" +
                    "}";
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost post = new HttpPost(url);
            StringEntity postingString = new StringEntity(json);// json传递
            post.setEntity(postingString);
            post.setHeader("Content-type", "application/json");
            HttpResponse response = httpClient.execute(post);
            return response.getEntity();
    
        }
    
        public static HttpEntity whitePostCircular(String token,String path,String usrId) throws IOException {
            log.info("whitePostCircular请求值:[{}]...[{}]..",path,usrId);//打印日志
            String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="
                    + token;
            //  String json = "{\"path\":\""+path+"\"}";
            String json = "{\n" +
                    " \"path\":\""+path+"\",\n" +
                    " \"scene\":\""+usrId+"\",\n" +
                    " \"is_hyaline\":true,\n" +
                    "\"line_color\": {\"r\":255,\"g\":255,\"b\":255}\n" +
                    "}";
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost post = new HttpPost(url);
            StringEntity postingString = new StringEntity(json);// json传递
            post.setEntity(postingString);
            post.setHeader("Content-type", "application/json");
            HttpResponse response = httpClient.execute(post);
            return response.getEntity();
    
        }
    
        public static HttpEntity newsPostCircular(String token,String path) throws IOException {
            String url = "https://api.weixin.qq.com/wxa/getwxacode?access_token="
                    + token;
            //  String json = "{\"path\":\""+path+"\"}";
            String json = "{\n" +
                    " \"path\":\""+path+"\",\n" +
                    " \"is_hyaline\":true,\n" +
                    "\"line_color\": {\"r\":255,\"g\":255,\"b\":255}\n" +
                    "}";
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost post = new HttpPost(url);
            StringEntity postingString = new StringEntity(json);// json传递
            post.setEntity(postingString);
            post.setHeader("Content-type", "application/json");
            HttpResponse response = httpClient.execute(post);
            return response.getEntity();
    
        }
    }
    
    // 每个角色对应的名性片
    @NotLogin
    @RequestMapping("/usrinfo/access")
    public void usrInfoAccess(String path, HttpServletResponse response, String usrId) {
        try {
            Map<String, String> map = new HashMap<>();
            map.put("grant_type", "填写获取token值");
            map.put("appid", "唯一标识");
            map.put("secret", "微信小程序秘钥");
            String accessToken =getToken();//调用上面弄的token方法
            // 判断的没参数
            if (StringUtils.isEmpty(usrId)) {
                usrId = null;
            } else {
                // 1、我套系统的返回值很有问题,所有的错误返回值全是400,前端根本没法判断,做逻辑处理。
                // 2、我就在这里可以使用参数校验,一般这种接口us人ID不合法根本进不来方法
                // response里面返回json
                //判断长度小于5或等于5
                if (usrId.length()<=5){
                    response.setContentType("application/json;charset=UTF-8");
                    response.getWriter().write(objectMapper.writeValueAsString(new DTO(400,"usrId长度过		短",null)));
                    response.setStatus(HttpStatus.OK.value());
                }
                usrId = usrId.substring(5, usrId.length());
            }
            log.info("usrId长度为:[{}]",usrId);//打印日志
            HttpEntity httpEntity = UrlUtil.whitePostCircular(accessToken, path, usrId);
            InputStream content = httpEntity.getContent();
            BufferedInputStream fis = new BufferedInputStream(content);
            response.setContentType("image/jpg");
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            //定义个数组,由于读取缓冲流中的内容
            byte[] buffer = new byte[1024];
            int bytesRead = 0;
            while ((bytesRead = fis.read(buffer)) != -1) {//读取流
                toClient.write(buffer, 0, bytesRead);
            }
            toClient.flush();
            toClient.close();
            fis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    展开全文
  • 另外正是由于是定制化的,所以去掉了IDEA里面杂七杂八的东西,只保留与鸿蒙项目有关的SDK和工具与设置,开发工具简洁纯净清爽,非常好用。 2.语言平台 开发TV和Wearable项目可以选择Java或JS语言作为开发语言,开发...
  • 使用 Node.js 开发简单的脚手架工具 Node.js 应用:Koa2 使用 JWT 进行鉴权 React Native React Native组件集成到Android原生项目 CSS3 玩转 CSS3 filter 滤镜 微信小程序 微信小程序之购物车功能 ...
  • 使用微信开发者工具新建项目,本地开发选择项目根目录,会自动导入项目配置。 哪些小程序是用 WePY 开发的 腾讯疫苗查询小程序、 腾讯翻译君小程序、 腾讯地图小程序、 玩转故宫小程序、 手机充值+、 手机余额查询...
  • 如有对该项目不解的小伙伴可以微信:2417978181咨询我哦! 求赞 该系统会稳定持续的升级维护,喜欢的小主给个免费的star吧,谢谢❤ 文档 文档内提供了详细的功能说明,强烈建议阅读文档后再开始编码。 启动...
  • 其它开发工具 JRebel:开发热部署 阿里JAVA开发规约插件 本地开发运行部署 依赖:Redis(必须) 新建xpay数据库,已开启ddl,运行项目后自动建表(仅一张表) 在 application.properties 中修改你的配置,例如...
  • DoraemonKit 是一个功能平台,能够让每一个 App 快速接入一些常用的或者你没有实现的一些辅助开发工具、测试效率工具、视觉辅助工具,而且能够完美在 Doraemon 面板中接入你已经实现的与业务紧密耦合的一些非通有的...
  • DoraemonKit 是一个功能平台,能够让每一个 App 快速接入一些常用的或者你没有实现的一些辅助开发工具、测试效率工具、视觉辅助工具,而且能够完美在 Doraemon 面板中接入你已经实现的与业务紧密耦合的一些非通有的...
  • 欢迎各位开发者把自己的项目加进来~ 发 Pull Request 或 Issue 即可 (入选标准:必须是网站或App,不能是开发者工具或论坛型网站) 2. 项目有 3 种状态 开发中 已上线 已关闭或缺乏维护 ✅ ❌ 社区...
  • 01 Python开发系列课程概要 02 Python作业要求以及博客 03 编程语言介绍 04 Python种类介绍 05 Python安装以及环境变量的操作 06 Python初识以及变量 07 Python条件语句和基本数据类型 08 Python while循环语句以及...

空空如也

1 2 3 4
收藏数 80
精华内容 32
关键字:

微信开发工具项目加图片