本地如何调试微信接口

原文链接:http://blog.csdn.net/xyang81/article/details/52141881

在做微信开发的时候,调用微信接口成功之后,微信会回调我们事先配置好的一个接口。由于微信的服务是在外网的,所以这个回调接口也只能是外网,而且微信要求回调接口只能是通过ICP备案的域名,不能使用IP。所以在开发调试的时候,需要把代码部署到线上的服务器,通过打log来跟踪接口调用情况,很明显这样开发效率非常低。下面介绍两款工具(natapp和sunny-ngrok)来解决这个问题,将本机的IP和端口映射到外网指定的域名下,通过访问映射的外网域名就可以直接访问到本机的服务。

1、natapp(免费/收费模式)

1> 首先在官网下载natapp客户端

客户端下载
解压后得到一个natapp/natapp.exe执行程序,Linux/Mac 系统 需要 添加执行权限:chmod a+x natapp

2> 运行

打开终端,在命令行中直接运行./natapp即可。运行成功后会进入如下界面:
natapp
从上图中可以看出,转发那行显示了外网域名到本机的端口映射关系。在外网访问http://3c8db5aa.ngrok.natapp.cn就可以将请求转发到本地80端口对应的服务上了。当然你需要在本机装一个监听80端口的web服务,比如:nginx、apache、iis。如果你是用Tomcat等应用服务器,端口也不是80的话,需要在nginx上再做一个反向代理配置,转换到tomcat对应的端口上。

location / {
proxy_pass http://localhost:8080;
}
1
2
3
1
2
3
访问http://127.0.0.1:4040可以监控请求路径、请求头和响应头等日志信息。

通过以上的操作,就完成了外网访问本机服务的工作。

3> 指定映射端口

natapp默认只能映射本机的80端口,如果要映射到指定端口,你需要在natapp官网注册一个帐号,并购买一个免费或收费的隧道,来配置映射到指定的端口上。操作流程如下图所示:
购买隧道
购买免费隧道

将本地端口修改成你需要映射的端口号,点击免费购买后回到我的隧道列表中,复制authtoken列对应的值。

隧道列表

运行:./natapp -authtoken=xxxxxx即可在控制台看到刚刚配置的自定义端口和域名的映射信息。如下图所示:

自定义端口映射
通过http://3c8db5aa.ngrok.natapp.cn/jingtong地址就可以访问到我本机8080端口tomcat部署的应用 jingtong 了。如下图所示:
访问外网域名映射到本地服务效果

但是免费的隧道有几点限制:
1> 域名是natapp随机生成的
2> 每个协议只能购买一个隧道,即每个协议只能映射一个端口
3> 只能映射一条隧道(一个转发域名)(sunny-ngrok可以映射多条隧道)
但也已经够用了,不是吗?

说了这么多,你应该知道怎么调试微信接口了吧? 只需要将natapp随机生成的域名,配置到微信的回调参数配置中即可。因为ngrok.natapp.cn域名是通过了ICP备案的,所以natapp随机生成的三级域名在微信当中都是可以通过验证的。

2、sunny-ngrok(完全免费模式)

sunny-ngrok配置稍微麻烦一点,需要有自己的域名。

1> 在sunny-ngrok注册一个帐号

2> 添加隧道

登录个人中心,新增一条隧道
添加隧道
参数解读:
隧道协议:支持http、https、tcp端口转发
隧道名称:名字随意
http域名类型:选择自定义
域名或远程端口:填写自己的在外网访问的域名
本地地址:本机IP或127.0.0.1
本地端口:本机web服务的端口
http验证用户名和http验证密码:访问域名时用户名密码校验,如果不需要校验可以不填
隧道列表

3> 自定义域名解析到server.ngrok.cc

需要将自定义的域名在域名管理服务商,将自定义域名用CNAME类型解析到server.ngrok.cc,才能提供服务。

4> 发布内网服务到外网

从隧道列表中,拷贝刚刚创建的客户端ID,执行:./sunny clientid 客户端ID1,客户端ID2,多个客户端ID用逗号分隔。效果如下图所示:
这里写图片描述

访问http://weixin.digi-zones.com效果,和natapp访问的效果一致。如下图所示:

这里写图片描述

3、小结

sunny-ngrok:

1> 完全免费
2> 可以定义多条隧道
3> 可以完全自定义域名
4> 需要自己申请域名并备案(算是一个缺点吧)

natapp:

1> 基本免费,高级功能收费(如自定义域名)
2> 免费版每个协议只能申请一条隧道
3> 域名随机生成,不能完全自定义域名。收费版也只能修改域名的前缀
4> 不需要单独申请域名(优点)
5> 运行简单,下载执行程序直接运行即可,默认监听80端口。如果要监听其它端口,没有注册帐号的前提下,需要用web服务器做反向代理


3

0

上一篇Tomcat单机多实例配置
下一篇Linux静态IP配置
我的同类文章
其它(3)
•Maven安装与环境配置(Windows)2016-05-24阅读4054
•Git使用详解2012-10-14阅读1810
•Cocos2d-x 3.0 beta 中加入附加项目,解决无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or directory”2014-08-21阅读1437

参考知识库
img
微信开发知识库
17488关注|707收录
img
.NET知识库
2885关注|815收录
img
Linux知识库
9266关注|3511收录
猜你在找
最涨薪的技能-PHP微信接口开发C#开发微信订阅号、服务号视频教程微信公众号订阅号+服务号开发工具包[微信公众号独立知识点]微信公众平台——客服接口(主动推送)UML建模技术
内网ip映射到外网应用实现发布内网网站等应用ngrok映射本地8080端口到外网自己电脑发布网站到外网实现过程用自己电脑做服务器发布Java项目到外网ubuntu单网卡绑定多IP 解决ubuntu下用局域网时不能连接到外网问题

查看评论
3楼 mking 2016-11-04 01:05发表 [回复]

谢谢,natapp真是太好用了!!
2楼 qq_26904155 2016-10-29 10:41发表 [回复]

无法映射本地8080端口;修改了好几次都不行?这是为啥
Re: xyang0917 2016-10-29 22:49发表 [回复]

回复qq_26904155:本机的8080服务启动了吗? 有没有错误提示信息?
1楼 sinat_29185819 2016-10-20 09:57发表 [回复]

E:\蓝桥程序\natapp>./natapp -authtoken=f84ab98c2b714734
‘.’ 不是内部或外部命令,也不是可运行的程序

咋回事
Re: xyang0917 2016-10-21 09:14发表 [回复]

回复sinat_29185819:把前面的./去掉
Re: sinat_29185819 2016-10-21 09:16发表 [回复]

回复xyang0917:ok 了感谢
发表评论
用 户 名:
xueling022
评论内容:
插入代码

提交
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
核心技术类目
全部主题 Hadoop AWS 移动游戏 Java Android iOS Swift 智能硬件 Docker OpenStack VPN Spark ERP IE10 Eclipse CRM JavaScript 数据库 Ubuntu NFC WAP jQuery BI HTML5 Spring Apache .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech Perl Tornado Ruby Hibernate ThinkPHP HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap
个人资料
访问我的空间
xyang0917

1 2
访问:488107次
积分:6100
等级:
排名:第3226名
原创:102篇转载:18篇译文:0篇评论:323条
博客专栏
JNI/NDK开发指南
文章:14篇
阅读:103122
文章搜索

搜索
文章分类
C(10)
C++(2)
Android(13)
JavaSE(26)
JavaEE(11)
JNI/NDK(14)
Web开发(5)
研发管理(0)
IOS(1)
Linux(8)
数据库(10)
数据结构与算法(3)
JavaMail(7)
DevOps(2)
nginx(5)
mysql(6)
分布式开发(12)
redis(5)
其它(4)
Zookeeper(4)
文章存档
2016年11月(4)
2016年10月(5)
2016年09月(5)
2016年08月(1)
2016年07月(10)
展开
阅读排行
深入分析Java ClassLoader原理(43937)
短信猫JAVA二次开发包SMSLib,org.smslib.TimeoutException: No response from device解决方案(20132)
JavaMail学习笔记(七)、帐号激活与忘记密码 实例(16745)
Android NDK开发Crash错误定位(14055)
如何手工卸载和安装NTKO OFFICE文档控件(12641)
JavaMail学习笔记(四)、使用POP3协议接收并解析电子邮件(全)(11825)
JNI/NDK开发指南(开山篇)(10486)
JNI/NDK开发指南(一)—— JNI开发流程及HelloWorld(10460)
SMSLib开发指南(10380)
JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法(10227)
评论排行
JavaMail学习笔记(七)、帐号激活与忘记密码 实例(60)
深入分析Java ClassLoader原理(55)
短信猫JAVA二次开发包SMSLib,org.smslib.TimeoutException: No response from device解决方案(28)
JNI/NDK开发指南(开山篇)(24)
SMSLib开发指南(18)
JNI/NDK开发指南(一)—— JNI开发流程及HelloWorld(15)
Android NDK开发Crash错误定位(11)
JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量(10)
JNI/NDK开发指南(十)——JNI局部引用、全局引用和弱全局引用(9)
JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法(8)
最新评论
Redis集群技术架构
Nex_Chin: 楼主这个redis系列的文章,写的很清晰,对于刚接触的人很收益,感谢!
分布式服务管理框架-Zookeeper安装与配置(单机、集群)
张思思: 写的很细致
FastDFS与Springboot集成
张思思: 谢谢分享
FastDFS分布式文件系统集群安装与配置
张思思: 讲解的很细致
JavaMail学习笔记(四)、使用POP3协议接收并解析电子邮件(全)
怀惗尛时候: 邮件正文:testtest多了后面那一段 为什么会这样
Tomcat配置与优化(内存、并发、管理)
qq_34995461: 写的很好!谢谢了!
十进制转换成二进制、八进制、十六进制的通用方法
赵尽朝: 理解了进制之间转换的规律
深入分析Java ClassLoader原理
赵尽朝: 谢谢楼主详细讲解。
MySQL主主数据同步
赵尽朝: 之前搭过主从,但是没有
分布式服务管理框架-Zookeeper安装与配置(单机、集群)
cmjzzx: 节点的 clientPort 设为 2181,接下来又是192.168.1.200:2888:388…

公司简介|招贤纳士|广告服务|联系方式|版权声明|法律顾问|问题报告|合作伙伴|论坛反馈
网站客服杂志客服微博客服[email protected]|北京创新乐知信息技术有限公司 版权所有|江苏知之为计算机有限公司|江苏乐知网络技术有限公司
京 ICP 证 09002463 号|Copyright © 1999-2016, CSDN.NET, All Rights Reserved GongshangLogo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章