结合百度云平台和微信公众平台进行开发(一)
2013-12-12 21:28
316 查看
套话大话我就不说了,网上一大堆,我们就直接进入正题吧,相信对百度云平台和微信公众平台没有了解的也不会关注这篇文章。
上面的标题到底是个什么意思呢?下面让我们一步一步来完成一个测试小项目。
两者是怎样结合的?
利用百度云平台运行我们自己的服务端项目,在平台上线运行。利用这个项目对应的域名将其配置到微信公众平台,并填写token值。(这里的token值是我们自定义的一个字符串,它配置在服务端项目)在手机微信客户端搜索你的微信公众平台公众号(订阅号),当然通过二维码会更快速准确,呵呵。
下面我们先重服务器端开始。
进入百度云平台的管理控制台(请大家进入旧版--右上角):http://developer.baidu.com/dev点击创建应用,并创建一个手机web应用。
出现以下页面后,点击云环境:
创建域名,选择开发语言(我用的是Java),选着版本管理器(我用的是svn),点击确定:
等待后弹出提示创建成功后,点击确定,跳转到如下页面---------创建版本:
点击创建版本后,会出现两种选择,一种是在线创建项目,然后在线编辑发布,本人还是觉得第二种顺手,上传war包,即将本地建好的web项目发布为war包,然后上传,在上线,我们就以上传war包方式为例:这里我们就暂且停下:开始来编辑我们需要的web项目。
在eclipse中心建一个web项目(tomcat服务器)新建MainServer.java
需要导入的jar包:
大家没有的可以到我的云盘去下载:点击打开链接
接着我们就应该配置微信公众平台了:(申请注册微信公众平台要求比较严格,需要审核几天到N天不等)。https://mp.weixin.qq.com/
前不久我是借用别个的账号进行测试的,我的公众号都几天了还没有通过,哎~所以这里没法给大家截图。其实微信里边配置很简单,就是一个访问项目的域名,和一个token值,填正确这两个后就可以确定了,(选择功能---高级功能---开发者模式---成为开发者----填写---提交(成功)---开启)
然后就是关注账号进行测试了。我的上一个测试用的是return这个号,大家关注后发送time试下效果(相同代码)
这里的域名就是你创建web项目时写的http://mytestserverforweixin.duapp.com/MainServer注意这里并不是完全正确的域名,还需要在前面加上你的版本号:http://1.mytestserverforweixin.duapp.com/MainServer。
填写后并提交成功,然后开启。
谢谢大家!
mytestserverforweixin.duapp.com
mytestserverforweixin.duapp.com
上面的标题到底是个什么意思呢?下面让我们一步一步来完成一个测试小项目。
两者是怎样结合的?
利用百度云平台运行我们自己的服务端项目,在平台上线运行。利用这个项目对应的域名将其配置到微信公众平台,并填写token值。(这里的token值是我们自定义的一个字符串,它配置在服务端项目)在手机微信客户端搜索你的微信公众平台公众号(订阅号),当然通过二维码会更快速准确,呵呵。
下面我们先重服务器端开始。
进入百度云平台的管理控制台(请大家进入旧版--右上角):http://developer.baidu.com/dev点击创建应用,并创建一个手机web应用。
出现以下页面后,点击云环境:
创建域名,选择开发语言(我用的是Java),选着版本管理器(我用的是svn),点击确定:
等待后弹出提示创建成功后,点击确定,跳转到如下页面---------创建版本:
点击创建版本后,会出现两种选择,一种是在线创建项目,然后在线编辑发布,本人还是觉得第二种顺手,上传war包,即将本地建好的web项目发布为war包,然后上传,在上线,我们就以上传war包方式为例:这里我们就暂且停下:开始来编辑我们需要的web项目。
在eclipse中心建一个web项目(tomcat服务器)新建MainServer.java
需要导入的jar包:
大家没有的可以到我的云盘去下载:点击打开链接
package com.weixin.zfeng.server; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.security.MessageDigest; import java.util.Arrays; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import com.weixin.zfeng.utils.Weather; public class MainServer extends HttpServlet{ //这里是你定义的token值 private final String TOKEN = "haha"; @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //取出随机字符串 String echostr=req.getParameter("echostr"); if(null==echostr||echostr.isEmpty()){ responseMsg(req,resp); }else{ if(this.checkSignature(req)){ resp.getWriter().print(echostr); }else{ resp.getWriter().print(""); } } } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } //回复 public void responseMsg(HttpServletRequest req,HttpServletResponse resp) throws IOException{ String postStr=null; try{ postStr=this.readStreamParameter(req.getInputStream()); }catch(Exception e){ e.printStackTrace(); } //System.out.println(postStr); if (null!=postStr&&!postStr.isEmpty()){ Document document=null; try{ document = DocumentHelper.parseText(postStr); if(null==document){ resp.getWriter().print(""); return; } }catch(Exception e){ e.printStackTrace(); } Element root=document.getRootElement(); String fromUsername = root.elementText("FromUserName"); String toUsername = root.elementText("ToUserName"); String keyword = root.elementTextTrim("Content"); String time = new Date().getTime()+""; String textTpl = "<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>"; //发送消息类型 String msgType = "text"; String contentStr = ""; String resultStr="";//返回消息 //关注订阅号后,返回的提示 if(null==keyword||keyword.equals("")){ contentStr = "hi,how are you! I'm server and with baiduyun"; } //微信客户端发送time,服务器解析到后返回当前时间 else if(keyword.equals("time")){ contentStr = new Date().toString(); } resultStr = String.format(textTpl, fromUsername, toUsername, time, msgType, contentStr+"---zhaofeng"); resp.getWriter().print(resultStr); }else { resp.getWriter().print(""); } resp.getWriter().flush(); resp.getWriter().close(); } //检查请求 public boolean checkSignature(HttpServletRequest request){ //这里是微信进行安全验证的四个值,由于token为明文,所以前用前三个值进行加密计算后的值与token对比(不具体描述) String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); String token=TOKEN; String[] tmpArr={token,timestamp,nonce}; Arrays.sort(tmpArr); String tmpStr=this.ArrayToString(tmpArr); tmpStr=this.SHA1Encode(tmpStr); if(tmpStr.equalsIgnoreCase(signature)){ return true; }else{ return false; } } public String SHA1Encode(String sourceString) { String resultString = null; try { resultString = new String(sourceString); MessageDigest md = MessageDigest.getInstance("SHA-1"); resultString = byte2hexString(md.digest(resultString.getBytes())); } catch (Exception ex) { } return resultString; } private String byte2hexString(byte[] bytes) { StringBuffer buf = new StringBuffer(bytes.length * 2); for (int i = 0; i < bytes.length; i++) { if (((int) bytes[i] & 0xff) < 0x10) { buf.append("0"); } buf.append(Long.toString((int) bytes[i] & 0xff, 16)); } return buf.toString().toUpperCase(); } // public String ArrayToString(String [] arr){ StringBuffer bf = new StringBuffer(); for(int i = 0; i < arr.length; i++){ bf.append(arr[i]); } return bf.toString(); } //流中读取数据 public String readStreamParameter(ServletInputStream in){ StringBuilder buffer = new StringBuilder(); BufferedReader reader=null; try{ reader = new BufferedReader(new InputStreamReader(in)); String line=null; while((line = reader.readLine())!=null){ buffer.append(line); } }catch(Exception e){ e.printStackTrace(); }finally{ if(null!=reader){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return buffer.toString(); } }这里是一个最基本的骨架代码,大家可以在上面进行跟多丰富的扩展。接着我们将项目导出为war包。接着就是刚刚说到的上传war包了,这里就不再讲了。上传成功后点击上线(哦这里有个下提示,当然这里不存在,免费用户每次只能上传50M以内哦),等待提示“代码已生效”后,出现:
接着我们就应该配置微信公众平台了:(申请注册微信公众平台要求比较严格,需要审核几天到N天不等)。https://mp.weixin.qq.com/
前不久我是借用别个的账号进行测试的,我的公众号都几天了还没有通过,哎~所以这里没法给大家截图。其实微信里边配置很简单,就是一个访问项目的域名,和一个token值,填正确这两个后就可以确定了,(选择功能---高级功能---开发者模式---成为开发者----填写---提交(成功)---开启)
然后就是关注账号进行测试了。我的上一个测试用的是return这个号,大家关注后发送time试下效果(相同代码)
这里的域名就是你创建web项目时写的http://mytestserverforweixin.duapp.com/MainServer注意这里并不是完全正确的域名,还需要在前面加上你的版本号:http://1.mytestserverforweixin.duapp.com/MainServer。
填写后并提交成功,然后开启。
谢谢大家!
mytestserverforweixin.duapp.com
mytestserverforweixin.duapp.com
相关文章推荐
- 结合百度云平台和微信公众平台开发(二)
- 结合百度云平台和微信公众平台开发(三)
- 微信公众平台开发 整合百度云开放平台与微信开放平台2
- 微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试
- 微信公众平台开发 整合百度云开放平台与微信开放平台
- 用 Eclipse 平台进行 C/C++ 开发
- 用 Eclipse 平台进行 C/C++ 开发
- 用yii2进行微信公众平台进行开发时应注意的问题
- asp.net 结合 memcache 进行分布式缓存的开发,结合mysql数据库
- 结合JavaScript与ASP.NET Web窗体进行程序开发
- 用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发
- windows平台下用eclispe进行c/c++开发
- 微信公众平台开发(sae开放平台)
- JFinal结合百度BAE进行开发
- .Net语言 APP开发平台——Smobiler学习日志:如何调用API进行短信发送
- 使用laravel5.4结合easywechat进行微信开发--基本配置
- 使用PHP进行微信公众平台开发的示例
- 结合AJAX进行PHP开发之入门
- 极速赛车平台出租【技术干货】如何进行低功耗设计和开发
- 用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发