-
微信小程序-微信小程序-订机票
2019-08-06 08:09:23images — 存放项目图片文件 pages — 存放项目页面文件 utils — 存放项目页面文件 开发环境: 微信web开发者工具 v0.11.112301 项目截图: https://www.getweapp.com/project?projectId=583ecd66e8ff074c22472f4d... -
微信小程序实战入门 内含完整实例解析_刘明洋_人民邮电.pdf
2019-05-12 19:30:43详细介绍小程序开发所涉及的内容和关键技术,帮助开发者快速掌握小程序开发,主要包括界面、网络、本地数据及缓存、设备硬件、微信开发接口、媒体、后端开发与设计。 第四章介绍了所有API的使用,主要包括网络、... -
微信小程序 解决请求服务器手机预览请求不到数据的方法
2021-01-03 07:06:44给项目加了APPID,准备进行手机预览的测试 这里说一下,在开发小程序时尽量把图片放到自己的服务器上,因为小程序在上传和预览时都有编译包的限制,没有算过,大概是1M,不知道以后会不会增加 点预览会生成一个... -
微信小程序手机端预览后台获取不到数据
2020-07-08 23:19:21给项目加了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 -
微信小程序开发者工请求服务器能成功,手机预览请求不到数据
2016-11-19 10:03:04微信小程序的文档中明确说明了所有的请求是必须使用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项目高效开发探究
2017-02-28 21:22:19鉴于市场上用户的手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作... -
CRMEB微信开发10群(862316758)3000人群可加 CRMEB微信开发11群(824195682)2000人群可加 CRMEB微信开发12群(1025263163)2000人群可加 CRMEB官方二开交流群(943955364)2000人群可加 导航栏目 前端下载 | 使用...
-
-
开放融合易用@门户移动开发新体验-逐浪CMS v8.0.1全面发布[基于dotNET Core]
2019-09-04 10:16:41开放:基于dotNET core,完全响应跨平台开源架构,配合微软件的全产业链生产线,从而具备从OS操作系统、数据库操作系统、开发工具、云计算、扩展或办公体系完整的生态支持(即开发商所提供的网站解决方案从源上支持... -
-
-
-
Anka - 渐进式小程序开发工具集,提供通用的开发函数库及组件 WeAppBunXin - 微信小程序开发之影分身术,一套代码生成多个小程序 miniprogram-build - 小程序命令行编译工具(支持typescript,原生npm,资源文件压缩....
-
Active4j可以应用在任何J2EE的项目开发中,尤其适合企业信息管理系统(MIS),企业办公系统(OA),客户关系管理系统(CRM),内容管理系统(CMS)等。 技术文档 讨论加群:qq群①:203802692 qq群②:773872959 ...
-
开发一款任意APP-开发一款任意APP需要的类库以及多渠道打包命名框架 如需学习用法详见旧版本:...
2019-09-23 19:27:02弃用(可参考)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 种状态 开发中 已上线 已关闭或缺乏维护 ✅ ❌ 社区...
-
python入门到高级全栈工程师培训 第3期 附课件代码
2018-06-07 09:38:4201 Python开发系列课程概要 02 Python作业要求以及博客 03 编程语言介绍 04 Python种类介绍 05 Python安装以及环境变量的操作 06 Python初识以及变量 07 Python条件语句和基本数据类型 08 Python while循环语句以及... -
-
-
-
-
2021年西式面点师(中级)考试APP及西式面点师(中级)作业考试题库
-
2021年A特种设备相关管理(电梯)答案解析及A特种设备相关管理(电梯)试题及答案
-
visual studio professional 2017 2019
-
three.js入门速成
-
03 Python程序文件结构.mp4
-
关于咖啡与咖啡因的含量
-
EDA课程报告-四人抢答器.pdf
-
T+V15.0专属云年结流程及相关问题
-
PTA教育超市《函数部分》理论题
-
soul网关学习day04
-
Java星选一卡通
-
前端性能优化
-
LINGO编程--西南大学.ppt
-
【数据分析-随到随学】Python数据获取
-
otp_win64_23.2.exe
-
小六壬
-
十六、十、二进制相互转换.zip
-
Cocos Creator游戏开发-连连看 (接入腾讯优量汇广告)
-
flink Caused by: java.net.BindException: Could not start rest endpoint on any port in port range 808
-
阿里云云计算ACP考试必备教程