《初识Java微信公众号开发》 学习中遇到的困难

前一段时间无聊的时候,在慕课网上自学了一点点微信公众号开发(受学姐威胁)。

慕课网教程的地址:http://www.imooc.com/learn/368



毕竟是免费的课程,不可能讲的那么详细。所以我吧我遇到的问题跟大家分享一下。

这是我照着课程敲的代码(IDE是Eclipse): https://github.com/Zuosy/WeiXin 发到github上面了。

为了这个,我还专门到廖大的网站上学了一遍Git。

廖大的Git教程传送们:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000


  • 那个映射工具不见尿

不见了,我就用了另一个映射工具,名字叫natapp。米纳桑可以自行百度一下,就有上面还有图文教程。

因为是玩玩,开个免费的就行了。这个工具不会超时,不错的。

发个图片秀一下:

  • 基本配置token验证失败

主要的问题是老毕没有分享sha1加密算法。百度的可能百度到假的“傻一”加密算法。

“傻一”加密算法的传送门:http://www.cnblogs.com/blackdeng/p/6060781.html

防止代码丢失,我贴出来

傻一加密算法工具类:

 1 package org.fc.Util;
 2
 3 import java.security.MessageDigest;
 4 import java.security.NoSuchAlgorithmException;
 5 import java.util.Arrays;
 6
 7 import com.sun.mail.handlers.message_rfc822;
 8
 9 public class SignUtil {
10
11     private static String  token="XXXXXX";
12
13     /**
14      * 传入三个参数以及微信的token(静态自己设定)验证,
15      * @param signature 签名用来核实最后的结果是否一致
16      * @param timestamp 时间标记
17      * @param nonce 随机数字标记
18      * @return 一个布尔值确定最后加密得到的是否与signature一致
19      */
20     public static boolean checkSignature(String signature,
21             String timestamp,String nonce){
22         //将传入参数变成一个String数组然后进行字典排序
23         String[] arr=new String[]{token,timestamp,nonce};
24         Arrays.sort(arr);
25         //创建一个对象储存排序后三个String的结合体
26         StringBuilder content=new StringBuilder();
27         for(int i=0;i<arr.length;i++){
28             content.append(arr[i]);
29         }
30
31
32         //启动sha1加密法的工具
33         MessageDigest md=null;
34         String tmpStr=null;
35         try {
36             md=MessageDigest.getInstance("SHA-1");
37             //md.digest()方法必须作用于字节数组
38             byte[] digest=md.digest(content.toString().getBytes());
39             //将字节数组弄成字符串
40             tmpStr=byteToStr(digest);
41         } catch (NoSuchAlgorithmException e) {
42             // TODO Auto-generated catch block
43             e.printStackTrace();
44         }
45         content=null;
46
47         return tmpStr!=null?tmpStr.equals(signature.toUpperCase()):false;
48
49     }
50
51
52     /**
53      * 将字节加工然后转化成字符串
54      * @param digest
55      * @return
56      */
57     private static String byteToStr(byte[] digest){
58         String strDigest="";
59         for(int i=0;i<digest.length;i++){
60             //将取得字符的二进制码转化为16进制码的的码数字符串
61             strDigest+=byteToHexStr(digest[i]);
62         }
63         return strDigest;
64     }
65
66     /**
67      * 把每个字节加工成一个16位的字符串
68      * @param b
69      * @return
70      */
71     public static String byteToHexStr(byte b){
72         //转位数参照表
73         char[] Digit= {‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘};
74
75
76         //位操作把2进制转化为16进制
77         char[] tempArr=new char[2];
78         tempArr[0]=Digit[(b>>>4)&0X0F];//XXXX&1111那么得到的还是XXXX
79         tempArr[1]=Digit[b&0X0F];//XXXX&1111那么得到的还是XXXX
80
81         //得到进制码的字符串
82         String s=new String(tempArr);
83         return s;
84     }
85 }

这个是好用的,可以直接替换老毕的CheckUtil 就行了。

  • XStream报错

缺少xmlpull的jar包

传送门: http://blog.csdn.net/ljg888/article/details/7711852

其实那些jar包,到网上都能下载,我发的gitbug项目里面应该都已经有了。

  • 中文乱码问题

这个是我粗心导致的。

1 response.setCharacterEncoding("UTF-8");

这行代码一定要写在doPost方法的第一行。

  • 注意大小写

注意textMessage类里面的属性(变量名) 一定要注意大小写。否则封装成xml的时候你就会打出GG。



这是我在慕课网上发的手记:http://www.imooc.com/article/20238

不会用慕课网上的手记,别举报我抄袭啊。

时间: 2024-08-02 11:02:40

《初识Java微信公众号开发》 学习中遇到的困难的相关文章

初识Java微信公众号开发

选定类型后不可更改 企业号与服务号,订阅号的区别 公众号微信注册流程: 个人就选择订阅号

JAVA微信公众号开发入门

好久没进博客,最近应某人的要求,要每周写一篇博客,故此今天就把我这周刚学的微信公众号开发的知识在此总结总结,以供后人查阅.我写博客都是简要白话文,勿喷. 1.为什么要学微信公众号开发 微信的用户量庞大,微信公众号的完善和不断的开放力度,企业市场对公众号开发的需求不断增加 2.如何搭建微信开发平台 开发工具什么的就不说了,因为微信是要外网访问的,所有你必须有个网上的服务器资源,而且你必须申请一个微信公众号. 2.1申请微信公众号 公众号有3种:订阅号,服务号,企业号 区别是企业号适合内部人使用,因

Java微信公众号开发

微信公众平台是腾讯为了让用户申请和管理微信公众账号而推出的一个web平台.微信公众账号的种类可以分为3种,并且一旦选定不可更改.按照功能的限制从小到大依次为:订阅号.服务号.企业号.个人只能注册订阅号.注册地址:https://mp.weixin.qq.com/. 开发环境的准备 微信公众号 外网映射工具(开发调试) 与微信的对接的URL应该满足以下的条件: 在公网上能够访问 只支持80端口 映射工具有很多,例如花生壳,ngrok可以将内网映射到公网上面,这样就可以使用公网访问本机的网络服务.下

Java微信公众号开发----关键字自动回复消息

在配置好开发者配置后,本人第一个想要实现的是自动回复消息的功能,说明以下几点: 1. url 仍然不变,还是开发配置里的url 2. 微信采用 xml 格式传输数据 3.微信服务器传给我们的参数主要有(如图): 附上解析xml类的依赖: 1 <!-- dom对象读取写入xml文件 --> 2 <dependency> 3 <groupId>dom4j</groupId> 4 <artifactId>dom4j</artifactId>

Java微信公众号开发-外网映射工具配置

一.开发环境准备 1.一个微信公众号 2.外网映射工具(开发调试)如花生壳.ngrok工具 注:与微信对接的URL要具备以下条件a:在公网上能够访问 b:端口只支持80端口 这里使用ngrok.cc: ngrok.cc它的服务基于ngrok实现,防止ngrok官网被墙不能访问,把服务器架设在了香港,不仅大大加快了大家的访问速度,还不怕被墙了,而且完全免费.官网地址::http://ngrok.cc/ 搭建步骤: 1.下载客户端 下载链接:http://www.ngrok.cc/index.php

java微信公众号开发思路

方法一:不开启开发模式,直接在自定义菜单中跳转到网页,适用于流量较小的公众号. 方法二:开启开发者模式,关闭自带的自定义菜单和消息回复,接入自己开发的应用 1.接入校验:创建servlet,在doGet()中进行校验,校验成功表示微信和当前应用接入成功 2.响应用户发送的消息:在servlet的doPost()中进行响应xml消息,xml消息有以下属性: FromUserName,ToUserName,MsgType,Content 其中MsgType又分event,text,voice,vid

java微信公众号开发,token验证

import java.io.IOException; import java.util.Arrays; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.binjoo.utils.SH

java微信公众号开发----搭建ngrok环境

下载ngrok,一个能够在公网安全访问内网Web主机的工具 下载地址:http://download.csdn.net/download/u014252425/9389847,亲测可用 下载完成后,进dos,切换到ngrok所在目录,输入 ngrok -config ngrok.cfg -subdomain example 8080 显示下图: 表示映射成功,将127.0.0.1:8080映射到example.tunnel.qydev.com这个域名 在tomcat上访问地址为http://lo

微信公众号开发入门笔记(一):知识及技术路线图

注:本系列博客所使用的编程语言为Java,内容主要来自于慕课网课程:初识Java微信公众号开发(课程链接:http://www.imooc.com/learn/368)的学习收获和总结. 因为微信的大规模普及性,微信公众号开发可以开发出跨平台使用的功能,并且使用起来简单方便.个人使用Java作为工作语言,对Java比较熟悉,所以本系列的笔记采用Java语言来进行开发.此外,慕课网的课程"初识Java微信公众号开发"为我带来了很大的启发,很适合想要做微信公众平台开发的朋友们的入门. 那么