文档章节

微信公众号开发实时调试方法

JFinal
 JFinal
发布于 2014/10/24 09:44
字数 1104
阅读 14425
收藏 75
点赞 19
评论 39

   初充说明:微信官方目前已推出“微信Web开发者工具”,建议使用官方工具,在此下载:

http://mp.weixin.qq.com/wiki/10/e5f772f4521da17fa0d7304f68b97d7e.html#.E4.B8.8B.E8.BD.BD.E5.9C.B0.E5.9D.80  以下的内容对于反向隧道感兴趣的朋友可以了解:

    微信公众平台对开发者的支持并不友好,例如没有提供开发的 SDK,开发者中心甩手一套开发文档和一个在线调试页面,但开发者最需要的是在开过程中的本地调试,设置好断点,实时地查看程序运行流程与变量值才是最高效率的开发方式。本文将介绍用于 JFinal Weixin 开发时的调试方法。

   在介绍具体方法前,简要了解一下本地调试环境下各系统的交互过程。微信手机移动端向微信公众号应用程序发送信息的交互过程大致为:微信手机端 app ---> 腾讯微信服务器 ---> 公众平台填写的 URL 指向的服务器 ---> 本地公众号应用程序,这个过程反过来就是本地公众号应用程序向微信手机端 app 回复信息的过程:本地公众号应用程序 ---> 公众平台填写的 URL 指向的服务器 ---> 腾讯微信服务器 ---> 微信手机端 app。公众平台所填写的 URL 指向的服务器可以是你本地的机器,前提是你本地机器可以在外网访问到,本文仅讨论本地机器在外网无法被访问的情况

1、路由器有真实的公网地址,最好是静态ip

     通过设置路由器端口转发,将 80端口转发到你的本地机器即可。很多情况下路由器的外网 ip 地址仍然在另一个路由器的局域网范围内,此法失效。如果是动态 ip 还需要不断去修改微信平台的 url 指向或域名解析地址,所以此法不太实用。

2、使用 ngrok

   主要工作原理是:通过 ngrok 客户端连上 ngrok 提供的服务器,这样就打通了一个连接隧道,然后让公众平台上的 url 指向 ngrok 服务器,ngrok 服务器接收到消息后会通过隧道将信息转发到你本地的 ngrok 客户端,使用比较简单,可以参考官方文档:https://ngrok.com,不过 ngrok 速度较慢,微信服务器对实时性要求较高,每次通信超过 5 秒便超时,所以此法也不建议使用。

3:使用具有公网ip的服务器

   作为一名专业工程师,拥有公网 ip 地址的 VPS 服务器基本成了标配,阿里云 VPS 最便宜的一款每年也就几百块钱,平时挂挂自己喜欢的服务,做个站长,跑跑自己的开源项目甚爽。

   首先确保该服务器可以通过 XShell 这类 SSH连接上去,为连接配置一个反向隧道,如下图所示:

   注意红色框部分所填写的配置,连接上服远端服务以后,在本地修改一下 JFinal Weixin Demo 项目的 token 配置,再修改微信公众平台的 url 与 token 以后就可以开始调试开发了。

   如果远程服务器是 windows 系统,可以安装一个Bitvise SSH Server 软件即可将 windows 服务器打造成SSH Server 了。

    后续补充:如果上面方式还是搞不定,可以看一下 jfinal weixin WIKI 中提供的更容易的方式解决,请移步这里:http://git.oschina.net/jfinal/jfinal-weixin/wikis/JFinal-weixin-demo%E5%92%8C%E8%B0%83%E8%AF%95 。

    另外:如果开发机器是 Linux 或是 Mac,直接使用如下 linux命即可建立反向隧道:ssh -R :80:localhost:本地端口 root@远程主机ip地址

© 著作权归作者所有

共有 人打赏支持
JFinal

JFinal

粉丝 3924
博文 4
码字总数 2275
作品 3
海淀
CTO(技术副总裁)
加载中

评论(39)

JFinal
JFinal

引用来自“Dreamlu”的评论

13波总,WIKI里面的基于QQ浏览器的调试非常不错:http://git.oschina.net/jfinal/jfinal-weixin/wikis/JFinal-weixin-demo%E5%92%8C%E8%B0%83%E8%AF%95 我上周试了一下非常简单!
早说啊,我在博客中加上这一段内容
如梦技术
如梦技术
13波总,WIKI里面的基于QQ浏览器的调试非常不错:http://git.oschina.net/jfinal/jfinal-weixin/wikis/JFinal-weixin-demo%E5%92%8C%E8%B0%83%E8%AF%95 我上周试了一下非常简单!
JFinal
JFinal

引用来自“simafei2”的评论

波总, 请问下Mac 反向隧道怎么建立的呀,查了好多资料都没有建成功过
Mac 下直接用命令建立反向隧道:ssh -R :80:localhost:80 root@远程主机ip地址。第一个 80 为远程端口号,后面的80为本地项目启动时的端口号,具体意义与本博文用的XShell建立反向隧道一样,根据你的实际情况进行改动。
s
simafei2
波总, 请问下Mac 反向隧道怎么建立的呀,查了好多资料都没有建成功过
JFinal
JFinal

引用来自“yourOnlyJack”的评论

@波总 ,强烈要求波总看一下最新的微信自带调试功能。非常酷,开发者模式可以生产一个URL用以调试本地网络。哪有文中所述那么复杂
微信官方新出来的功能不? 给个链接哈
yourOnlyJack
yourOnlyJack
@波总 ,强烈要求波总看一下最新的微信自带调试功能。非常酷,开发者模式可以生产一个URL用以调试本地网络。哪有文中所述那么复杂
JFinal
JFinal

引用来自“xtuul”的评论

@波总 ,我也通过XSHELL连接到阿里云服务,按照你的图示也配置了,但是就是转不到本地来,利用IP进行访问还是访问到了阿里云上,能把第三种设置方法,说详细一些吗?
阿里云最新版本的linux的确不能直接正常工作,安装一个nginx,然后用于微信的域名 80 端口转发到 9999,然后隧道配置中的远程incoming 端口由 80 改成 9999即可,前几天确认过可用。简单来说就一句话,在本博客的基础之上,远程端口让 nginx 做次转发
xtuul
xtuul
@波总 ,我也通过XSHELL连接到阿里云服务,按照你的图示也配置了,但是就是转不到本地来,利用IP进行访问还是访问到了阿里云上,能把第三种设置方法,说详细一些吗?
uestcdengww
uestcdengww

引用来自“uestcdengww”的评论

波总,你好!
我在阿里云vps上可以测试到隧道已打通,如下所示。但是通过浏览器访问公网ip一直失败,不知道为什么?
root@iZ28dwnr7nwZ:~# wget http://localhost:80/jfinal_weixin/msg
--2015-07-22 22:49:11-- http://localhost/jfinal_weixin/msg
Resolving localhost (localhost)... 127.0.0.1, 127.0.1.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: ‘msg.12’

[ <=> ] 69 --.-K/s in 0s

2015-07-22 22:49:11 (3.53 MB/s) - ‘msg.12’ saved 69

引用来自“JFinal”的评论

很明显访问返回的状态是 200,证明是成功的。另外,路由 "/msg" 是让微信平台访问的,不是让 wget 来访问的。访问一下 "/api/getMenu" 这个是浏览器访问的,可以获取公众号菜单
我晚上回去试试,谢谢波总
JFinal
JFinal

引用来自“uestcdengww”的评论

波总,你好!
我在阿里云vps上可以测试到隧道已打通,如下所示。但是通过浏览器访问公网ip一直失败,不知道为什么?
root@iZ28dwnr7nwZ:~# wget http://localhost:80/jfinal_weixin/msg
--2015-07-22 22:49:11-- http://localhost/jfinal_weixin/msg
Resolving localhost (localhost)... 127.0.0.1, 127.0.1.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: ‘msg.12’

[ <=> ] 69 --.-K/s in 0s

2015-07-22 22:49:11 (3.53 MB/s) - ‘msg.12’ saved 69
很明显访问返回的状态是 200,证明是成功的。另外,路由 "/msg" 是让微信平台访问的,不是让 wget 来访问的。访问一下 "/api/getMenu" 这个是浏览器访问的,可以获取公众号菜单
微信公众号开发工具汇总

前阵子写了篇入坑指南,介绍了下开发微信公众号的基本流程。最近又捣鼓了一阵,发现这开发工具的选择对于提高开发效率真是有莫大的帮助,所谓“只要工具选得好,月底奖金跑不了”。今天得空,...

郗南枫
2017/09/25
0
0
微信公众号开发之网页授权认证获取用户的详细信息,实现自动登陆

原创声明:本文转来源本人另一博客【http://blog.csdn.net/liaohaojian/article/details/70175835】绝非他人处转载 从接触公众号到现在,开发维护了2个公众号,开发过程中遇到很多问题,现在...

半山闲人
2017/04/15
0
0
如何在本地进行微信公众号的开发调试

在进行微信公众号开发时,以前必须要有外网域名才能收到微信服务器的推送,这给开发和调试带来很大的不便。 现在方便了,QQ浏览器提供了微信公众号调试工具,开发者可以在自己的开发机上进行...

flyurt
2015/10/29
8K
4
微信公众号开发--环境搭建和准备工作

开发和调试之殇 微信公众号的开发,说简单也简单,说麻烦也麻烦,麻烦的不是开发过程,而是搭建开发环境的过程。不过俗话说得好,磨刀不误砍柴工,我们有必要花点时间来研究下如何攻破微信公...

我家有宝
2016/10/09
126
0
基于Django的微信公众号开发之实现消息的接收与发送

基于Django的微信公众号开发之实现消息的接收与发送 准备工作 在正式开始之前,需要做一些准备: a: 安装好wechat_sdk; b: 成功通过了微信公众号的开发者认证; c: 新建一个应用(不是必须的), ...

Django
2017/12/20
0
0
微信小程序学习资源

微信小程序开发资源汇总 QQ交流群 目录 官方文档 新闻报道 社区 工具 插件 分析 讨论 教程 视频教程 文章 代码 轮子 置顶 WePY:组件化的小程序开发框架 :100: WePY 开发资源汇总 :100: ZanU...

技术金三胖
01/01
0
0
微信JS-SDK之地理位置的获取与在线导航,集成百度地图实现在线地图搜索

原创声明:本文来源于本人另一博客【微信JS-SDK之地理位置的获取,集成百度地图实现在线地图搜索】原创作品,绝非他处摘取,转载请联系博主 本次讲解微信开发第三篇:获取用户地址位置信息,...

半山闲人
2017/05/24
0
0
开始学习微信公众号开发

注册开发账号 要开发微信公众号,首先得有一个微信公众号作为开发环境。否则,你怎么知道你写的是对的。这里,我直接就被自己坑了。注册是没错的,但是,我开通的是个人公众号。据我现在了解...

本然
2016/05/20
312
0
Zabbix分布式监控微信报警实战

作为运维工程师,最重要的事情就是保证该网站正常稳定的运行,需要实时监控网站、服务器的运行状态,并且有故障及时去处理。 监控网站无需人工时刻去访问WEB网站或者登陆服务器去检查, 可以...

wgkgood
2017/05/25
0
0
微信开发环境搭建

一、微信开发环境搭建   工欲善其事,必先利其器。要做微信公众号开发,那么要先准备好两样必不可少的东西:   1、要有一个用来测试的公众号。   2、用来调式代码的开发环境。 1.1、注...

林夕2018
2016/04/29
671
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
59分钟前
2
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
1
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
153
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部