利用百度云平台运行我们自己的服务端项目,在平台上线运行。利用这个项目对应的域名将其配置到微信公众平台,并填写token值。(这里的token值是我们自定义的一个字符串,它配置在服务端项目)在手机微信客户端搜索你的微信公众平台公众号(订阅号),当然通过二维码会更快速准确,呵呵。
下面我们先重服务器端开始。
进入百度云平台的管理控制台(请大家进入旧版--右上角):http://developer.baidu.com/dev点击创建应用,并创建一个手机web应用。
出现以下页面后,点击云环境:
创建域名,选择开发语言(我用的是Java),选着版本管理器(我用的是svn),点击确定:
等待后弹出提示创建成功后,点击确定,跳转到如下页面---------创建版本:
点击创建版本后,会出现两种选择,一种是在线创建项目,然后在线编辑发布,本人还是觉得第二种顺手,上传war包,即将本地建好的web项目发布为war包,然后上传,在上线,我们就以上传war包方式为例:这里我们就暂且停下:开始来编辑我们需要的web项目。
在eclipse中心建一个web项目(tomcat服务器)新建MainServer.java
需要导入的jar包:
大家没有的可以到我的云盘去下
- <span style="font-family:SimHei;font-size:12px;">package
- import
- import
- import
- import
- import
- import
- import
- import
- import
- import
- import
- import
- import
- import
- import
- public class MainServer extends
- //这里是你定义的token值
- private final String TOKEN = "haha";
- @Override
- protected void
- throws
- //取出随机字符串
- "echostr");
- if(null==echostr||echostr.isEmpty()){
- responseMsg(req,resp);
- else{
- if(this.checkSignature(req)){
- resp.getWriter().print(echostr);
- else{
- "");
- }
- }
- }
- @Override
- protected void
- throws
- doPost(req, resp);
- }
- //回复
- public void responseMsg(HttpServletRequest req,HttpServletResponse resp) throws
- null;
- try{
- this.readStreamParameter(req.getInputStream());
- catch(Exception e){
- e.printStackTrace();
- }
- //System.out.println(postStr);
- if (null!=postStr&&!postStr.isEmpty()){
- null;
- try{
- document = DocumentHelper.parseText(postStr);
- if(null==document){
- "");
- return;
- }
- catch(Exception e){
- e.printStackTrace();
- }
- Element root=document.getRootElement();
- "FromUserName");
- "ToUserName");
- "Content");
- new Date().getTime()+"";
- "<xml>"+
- "<ToUserName><![CDATA[%1$s]]></ToUserName>"+
- "<FromUserName><![CDATA[%2$s]]></FromUserName>"+
- "<CreateTime>%3$s</CreateTime>"+
- "<MsgType><![CDATA[%4$s]]></MsgType>"+
- "<Content><![CDATA[%5$s]]></Content>"+
- "<FuncFlag>0</FuncFlag>"+
- "</xml>";
- //发送消息类型
- "text";
- "";
- "";//返回消息
- //关注订阅号后,返回的提示
- if(null==keyword||keyword.equals("")){
- "hi,how are you! I'm server and with baiduyun";
- }
- //微信客户端发送time,服务器解析到后返回当前时间
- else if(keyword.equals("time")){
- new
- }
- "---zhaofeng");
- resp.getWriter().print(resultStr);
- else
- "");
- }
- resp.getWriter().flush();
- resp.getWriter().close();
- }
- //检查请求
- public boolean
- //这里是微信进行安全验证的四个值,由于token为明文,所以前用前三个值进行加密计算后的值与token对比(不具体描述)
- "signature");
- "timestamp");
- "nonce");
- String token=TOKEN;
- String[] tmpArr={token,timestamp,nonce};
- Arrays.sort(tmpArr);
- this.ArrayToString(tmpArr);
- this.SHA1Encode(tmpStr);
- if(tmpStr.equalsIgnoreCase(signature)){
- return true;
- else{
- return false;
- }
- }
- public
- null;
- try
- new
- "SHA-1");
- resultString = byte2hexString(md.digest(resultString.getBytes()));
- catch
- }
- return
- }
- private String byte2hexString(byte[] bytes) {
- new StringBuffer(bytes.length * 2);
- for (int i = 0; i < bytes.length; i++) {
- if (((int) bytes[i] & 0xff) < 0x10) {
- "0");
- }
- int) bytes[i] & 0xff, 16));
- }
- return
- }
- //
- public
- new
- for(int i = 0; i < arr.length; i++){
- bf.append(arr[i]);
- }
- return
- }
- //流中读取数据
- public
- new
- null;
- try{
- new BufferedReader(new
- null;
- while((line = reader.readLine())!=null){
- buffer.append(line);
- }
- catch(Exception e){
- e.printStackTrace();
- finally{
- if(null!=reader){
- try
- reader.close();
- catch
- e.printStackTrace();
- }
- }
- }
- return
- }
- }
- </span>
这里是一个最基本的骨架代码,大家可以在上面进行跟多丰富的扩展。接着我们将项目导出为war包。接着就是刚刚说到的上传war包了,这里就不再讲了。上传成功后点击上线(哦这里有个下提示,当然这里不存在,免费用户每次只能上传50M以内哦),等待提示“代码已生效”后,出现:
接着我们就应该配置微信公众平台了:(申请注册微信公众平台要求比较严格,需要审核几天到N天不等)。https://mp.weixin.qq.com/
前不久我是借用别个的账号进行测试的,我的公众号都几天了还没有通过,哎~所以这里没法给大家截图。其实微信里边配置很简单,就是一个访问项目的域名,和一个token值,填正确这两个后就可以确定了,然后就是关注账号进行测试了。我的上一个测试用的是return这个号,大家关注后发送time试下效果(相同代码)
这里的域名就是你创建web项目时写的mytestserverforweixin.duapp.com注意这里并不是完全正确的域名,还需要在前面加上你的版本号:1.mytestserverforweixin.duapp.com。希望过几天我的公众号能够通过,
到时候给大家截两张图更好。
标签:web,return,账号,微信,resp,token,null,百度 From: https://blog.51cto.com/u_13657808/5894082