文档章节

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

JFinal
 JFinal
发布于 2014/10/24 09:44
字数 1104
阅读 14913
收藏 77

   初充说明:微信官方目前已推出“微信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

粉丝 3971
博文 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" 这个是浏览器访问的,可以获取公众号菜单
从零学习游戏服务器开发(一) 从一款多人联机实时对战游戏开始

版权声明:欢迎关注我的微信公众号:「easyserverdev」,中文名:『高性能服务器开发』。 https://blog.csdn.net/analogous_love/article/details/80290524 写在前面的话 经常有学生或者初学...

analogous_love
05/15
0
0
微信公众号开发之网页授权认证获取用户的详细信息,实现自动登陆

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

半山闲人
2017/04/15
0
0
微信公众号开发工具汇总

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

郗南枫
2017/09/25
0
0
微信公众号开发之网页中及时获取当前用户Openid及注意事项

目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 (四)微信公众号开发之网页授权获取用户基本信息 (五)微信公众...

micahel
2017/01/12
0
0
微信JS-SDK之地理位置的获取与在线导航,集成百度地图实现在线地图搜索

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

半山闲人
2017/05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

线程安全性--volatile

volatile:当多个线程进行操作共享数据时,可以保证内存中的数据是可见的; @Slf4jpublic class MyVolatile { public static void main(String[] args) { ThreadRun threadRun...

wuyiyi
19分钟前
1
0
大数据入门之hadoop相关概念知识点整理

Hadoop是一个开源框架,允许使用简单的编程模型在跨计算机集群的分布式环境中存储和处理大数据。它的设计是从单个服务器扩展到数千个机器,每个都提供本地计算和存储。今天整理了一些关于had...

技术阿飞
20分钟前
1
0
ssh 免登

ssh-copy-id三步实现SSH无密码登录和ssh常用命令 ssh-copy-id -i .ssh/id_rsa.pub 用户名字@192.168.x.xxx

miaojiangmin
22分钟前
1
0
2018阿里云双12年终大促主会场全攻略

2018阿里云双12年终大促活动已经于12月7日正式开启,从已开放的活动页面来看,活动分为两个阶段: 12月7日-12月23日的拉新返现阶段和12月24日-12月28日的TOP100英雄榜PK阶段。 活动核心亮点:...

阿里云官方博客
23分钟前
1
0
聊聊flink的MemoryStateBackend

序 本文主要研究一下flink的MemoryStateBackend StateBackend flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/StateBackend.java @PublicEvolvingpublic interface......

go4it
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部