1.NATAPP注冊(cè)賬號(hào)横侦,購買免費(fèi)通道
2.在我的順道中精堕,選擇剛剛購買的隧道即寒,點(diǎn)擊配置
3.在我的隧道詳情頁進(jìn)行配置本地端口以及IP姨蟋,且復(fù)制authtoken(如果電腦性能不太好,nameWEB管理界面推薦關(guān)閉)
4.下載NATAPP客戶端与殃,解壓后是natapp.exe单山,在其目錄下創(chuàng)建config.ini文件,將在我的隧道配置中的authtoken,粘貼到這里
#將本文件放置于natapp同級(jí)目錄 程序?qū)⒆x取 [default] 段
#在命令行參數(shù)模式如 natapp -authtoken=xxx 等相同參數(shù)將會(huì)覆蓋掉此配置
#命令行參數(shù) -config= 可以指定任意config.ini文件
[default]
authtoken= #對(duì)應(yīng)一條隧道的authtoken
clienttoken= #對(duì)應(yīng)客戶端的clienttoken,將會(huì)忽略authtoken,若無請(qǐng)留空,
log=none #log 日志文件,可指定本地文件, none=不做記錄,stdout=直接屏幕輸出 ,默認(rèn)為none
loglevel=ERROR #日志等級(jí) DEBUG, INFO, WARNING, ERROR 默認(rèn)為 DEBUG
http_proxy= #代理設(shè)置 如 http://10.123.10.10:3128 非代理上網(wǎng)用戶請(qǐng)務(wù)必留空
5.運(yùn)行natapp.exe文件幅疼,即可看到如下界面米奸,紅線圈著的即為你對(duì)外的域名
blob.png
參數(shù) |
意義 |
Tunnel Status |
Online 代表鏈接成功 |
Version |
當(dāng)前客戶端版本,如果有新版本,會(huì)有提示 |
Forwarding |
當(dāng)前穿透 網(wǎng)址 或者端口 |
Web Interface |
是本地Web管理界面,可在隧道配置打開或關(guān)閉,僅用于web開發(fā)測(cè)試 |
Total Connections |
總連接數(shù) |
Avg Conn Time |
0.00ms 這里不代表,不代表,不代表 延時(shí),需要注意! |
6.打開瀏覽器,在瀏覽器的域名框中爽篷,將之前以127.0.0.1:80能訪問的連接悴晰,改為用natapp分配的域名訪問,如果訪問成功,即成功
7.編寫URL路徑的驗(yàn)證控制器
@Controller
@RequestMapping("/weixin")
public class WeixinController {
<!--微信平臺(tái)配置頁面铡溪,輸入U(xiǎn)RL漂辐,token等之后,提交棕硫,會(huì)提交到髓涯,當(dāng)前get方法中-->
@GetMapping("/wx")
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String signature = req.getParameter("signature");
String timestamp = req.getParameter("timestamp");
String nonce = req.getParameter("nonce");
String echostr = req.getParameter("echostr");
PrintWriter out = resp.getWriter();
if(CheckUtil.checkSignature(signature, timestamp, nonce)){
out.print(echostr);
}
}
}
<!--SHA1加密工具類-->
public class CheckUtil {
<!--網(wǎng)頁配置的token是多少,這里常量就是多少-->
private static final String token = "token";
public static boolean checkSignature(String signature,String timestamp,String nonce){
String[] arr = new String[]{token,timestamp,nonce};
//排序
Arrays.sort(arr);
//生成字符串
StringBuffer content = new StringBuffer();
for(int i=0;i<arr.length;i++){
content.append(arr[i]);
}
//sha1加密
String temp = getSha1(content.toString());
return temp.equals(signature);
}
/**
* Sha1加密方法
* @param str
* @return
*/
public static String getSha1(String str) {
if (str == null || str.length() == 0) {
return null;
}
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' };
try {
MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
mdTemp.update(str.getBytes("UTF-8"));
byte[] md = mdTemp.digest();
int j = md.length;
char buf[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
buf[k++] = hexDigits[byte0 & 0xf];
}
return new String(buf);
} catch (Exception e) {
return null;
}
}
}
8.在微信公眾平臺(tái)配置自己的url哈扮,token等纬纪,接口配置信息的url為分配給你的域名加你寫的controller的url
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者