公司运营的一个网站需要与微信对接,使用微信的自动回复功能作为与网友的交流手段。网上只找到ASP的例子,以及官方提供的PHP方面的例子。都比较模糊,自己摸索了一下,搞定,现分享如下:
1.注册公共平台接口
按要求填写,URL处留空,先不要点提交。
2.此时在本地新建一个UTF-8格式的JSP,文件名任意,我使用的文件名为wx.jsp,内容如下:
3.将wx.jsp上传到服务器中,并将该jsp的访问路径复制到“1”中的URL中,此时点提交,则会提示验证成功。
4.再次打开jsp文件,注释掉“2”中的代码,我的理解是,那段代码仅为第一次验证URL有效性的时候使用。
5.编写如下代码(注:为了抛砖引玉,所以代码比较简单,未引入任何第三方jar包,方便大家测试)
6.保存文件,更新代码到服务器端,使用手机测试即可。
1.注册公共平台接口
按要求填写,URL处留空,先不要点提交。
2.此时在本地新建一个UTF-8格式的JSP,文件名任意,我使用的文件名为wx.jsp,内容如下:
1
2
3
|
<%
out.print(request.getParameter(
"echostr"
));
%>
|
3.将wx.jsp上传到服务器中,并将该jsp的访问路径复制到“1”中的URL中,此时点提交,则会提示验证成功。
4.再次打开jsp文件,注释掉“2”中的代码,我的理解是,那段代码仅为第一次验证URL有效性的时候使用。
5.编写如下代码(注:为了抛砖引玉,所以代码比较简单,未引入任何第三方jar包,方便大家测试)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// 接收XML数据
BufferedReader br =
new
BufferedReader(
new
InputStreamReader((ServletInputStream)request.getInputStream()));
String line =
null
;
StringBuilder sb =
new
StringBuilder();
while
((line = br.readLine())!=
null
){
sb.append(line);
}
// 取出发送用户
String xmlS = sb.toString();
int
fromuser_s = xmlS.indexOf(
"<FromUserName><![CDATA["
);
int
fromuser_e = xmlS.indexOf(
"]]></FromUserName>"
);
String fromuser = xmlS.substring(fromuser_s +
23
, fromuser_e);
// 取出目标用户
int
touser_s = xmlS.indexOf(
"<ToUserName><![CDATA["
);
int
touser_e = xmlS.indexOf(
"]]></ToUserName>"
);
String touser = xmlS.substring(touser_s +
21
, touser_e);
// 取出发送内容
int
content_s = xmlS.indexOf(
"<Content><![CDATA["
);
int
content_e = xmlS.indexOf(
"]]></Content>"
);
String content = xmlS.substring(content_s +
18
, content_e);
out.print(
"<xml>"
);
out.print(
" <ToUserName><![CDATA["
+fromuser+
"]]></ToUserName>"
);
out.print(
" <FromUserName><![CDATA["
+touser+
"]]></FromUserName>"
);
out.print(
" <CreateTime>"
+
new
Date().getTime()+
"</CreateTime>"
);
out.print(
" <MsgType><![CDATA[text]]></MsgType>"
);
out.print(
" <Content><![CDATA[你好:D,自动回复接口测试成功。]]></Content>"
);
out.print(
" <FuncFlag>0</FuncFlag>"
);
out.print(
"</xml>"
);
|
6.保存文件,更新代码到服务器端,使用手机测试即可。