2017-07-21 20:23:28 m0_37355951 阅读数 1008
  • 微信公众平台深度开发Java版v2.0单品课程——微信WEB...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    7641 人正在学习 去看看 翟东平

概述:

初次接触微信服务器配置真的不知怎么弄。所以记录下来。

1、理解微信服务器配置原理

在配置的时候,当你点击提交的时候,微信会校验你的服务器是否通畅,关键问题是:

微信会发什么数据到我指定服务器?

服务器应该回什么数据?

看一下微信开发文档没有找到这个

最后在一篇博文中找到了。

微信向服务器发送字段:

signature 微信加密签名
timestamp 时间戳
nonce 随机数
echostr 随机字符串

服务器返回给微信:

echostr 随机字符串

原理:将Token、timestamp、nonce 排序之后通过SHA-1加密变成byte[] ,然后将字节数组变成字符串,判断加密之后字符串和signature是否一样,一样表示微信发过来的数据。

2、本地应用怎么映射成外网url

我使用的是:ngrok    官网:点击打开链接

下载下来是一个.exe 文件

双击运行既可

输入:ngrok http 80       (表示监听80端口)


3、接下来写java代码

采用Spring框架,简单测试一下可以参考下列链接

@ResponseBody
	@RequestMapping(value="/event", method = RequestMethod.GET)
	public void event(HttpServletRequest request, HttpServletResponse response) throws IOException {
		 //微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp,nonce参数
        String signature = request.getParameter("signature");
        //时间戳
        String timestamp = request.getParameter("timestamp");
        //随机数
        String nonce = request.getParameter("nonce");
        //随机字符串
        String echostr = request.getParameter("echostr");
        if(SignUtil.checkSignature(signature, timestamp, nonce)) {
        	logger.info("[signature: "+signature + "]<-->[timestamp: "+ timestamp+"]<-->[nonce: "+nonce+"]<-->[echostr: "+echostr+"]");
        	response.getOutputStream().println(echostr);
        }
	}

工具类;

package com.rinlink.intelligent.weixin.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

/**
 * 2017年7月21日20:14:19
 * @author jack
 *
 */
public class SignUtil {
	
	private static String token = "9999";
	
	/**
	 * 校验签名
	 * @param signature  签名
	 * @param timestamp 时间戳
	 * @param nonce 随机数
	 * @return true 成功,false 失败
	 */
	public static boolean checkSignature(String signature,String timestamp, String nonce){
		
		String checktext = null;
		if(null != signature){
			//对Token,timestamp nonce 按字典排序
			String [] paramArr = new String[] {token, timestamp, nonce};
			Arrays.sort(paramArr);
			//将排序后的结果拼成一个字符串
			String content = paramArr[0].concat(paramArr[1]).concat(paramArr[2]);
			try {
				MessageDigest md = MessageDigest.getInstance("SHA-1");
				//对接后的字符串进行sha1加密
				byte[] digest = md.digest(content.toString().getBytes());
				checktext = byteToStr(digest);
			} catch (NoSuchAlgorithmException e) {
				e.printStackTrace();
			}
		}
		//将加密后的字符串与signature进行对比
		return checktext != null ? checktext.equals(signature.toUpperCase()) :false;
	}

	/**
	 * 将字节数组转化为16进制字符串
	 * @param digest  字符数组
	 * @return 字符串
	 */
	private static String byteToStr(byte[] byteArrays) {
		String str="";
		for (int i = 0; i < byteArrays.length; i++){
			str += byteToHexStr(byteArrays[i]);
		}
		return str;
	}

	/**
	 * 将字节转化为十六进制字符串
	 * @param myByte 字节
	 * @return 字符串
	 */
	private static String byteToHexStr(byte myByte) {

			char[] Digit = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
			char[] tempArr = new char[2];
			tempArr[0] = Digit[(myByte >>> 4)&0X0F];
			tempArr[1] = Digit[myByte & 0x0F];
			String str = new String(tempArr);
		return str;
	}
	
	
}

4、配置url和Token


5、启动你服务,然后点击微信提交按钮,祝你成功。

参考地址:点击打开链接

2018-10-03 10:48:42 qq_41583828 阅读数 8076
  • 微信公众平台深度开发Java版v2.0单品课程——微信WEB...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    7641 人正在学习 去看看 翟东平

微信测试公众号 url配置失败的问题的一种解决方法!

话不多说,国庆快乐!
-微信公众号开发使用测试号 一直提示管理失败(类似这个)
借用下别人的图
过程是这样的:

只需要三个步骤就可以搞定     1:在微信的测试公众平台填写服务器地址URL和Token.             
2:在自己的服务器写个简单的controller, 返回微信请求的信息                                                                                 
3:在页面上点击提交 , 微信平台会请求你填写的服务器地址 , 你的服务器正确响应微信的请求
 具体方式如下:第一步主要注意的要点:URL必须
 是外网能够访问到的服务器地址,  而且必须是80端口, 我们大多是本地开发, 如何把内网映射出去呢 ,?这是最麻烦的一点!
					  前往这里这里注册一个:https://www.ngrok.cc/  要仔细看教程  !

仔细看图片
本地测试代码如下:(仅供参考)

package com.imooc.abc;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
    @Controller
    @RequestMapping("/abc")
    public class GetWxSginController {

        private  Logger logger = LoggerFactory.getLogger(GetWxSginController.class);

        @ResponseBody
        @RequestMapping(value = "/test", method = RequestMethod.GET, produces = { "application/json;charset=utf-8" })
        public String getWxUserInfo(HttpServletRequest request,
                                   @RequestParam(required = false) String echostr,
                                          @RequestParam(required = false) String signature,
                                    @RequestParam(required = false) String timestamp,
                                    @RequestParam(required =false) String nonce
        ) {
            try {
                //只需要把微信请求的 echostr, 返回给微信就可以了
                logger.info("测试来过===================" + echostr);
                logger.info("测试来过===================" + signature);
                logger.info("测试来过===================" + timestamp);
                logger.info("测试来过===================" + nonce);
                return echostr;
            } catch (Exception e) {
                logger.info("测试微信公众号的接口配置信息发生异常:", e);
                return "错误!!!";
            }

        }
    }

前往公众号测试成功:
成功界面

控制台会输出:
在这里插入图片描述

要注意:不成功就断掉wifi使用网线!
不成功的小伙伴尝试下这个:https://blog.csdn.net/qq_34096082/article/details/79985141
不成功多找找方法,今天你看到的都是别人无数个日夜找到的解决方法!

2017-07-07 15:00:28 metgo 阅读数 428
  • 微信公众平台深度开发Java版v2.0单品课程——微信WEB...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    7641 人正在学习 去看看 翟东平

接入概述

    和微信官方文档给出的开发接入指南稍微有点儿不同,我把微信平台和服务器对接的代码编写放到了平台接入这一块,因为作为半个新人来讲,我觉得微信给出的开发文档是我见过最难入门的开发文档,没有之一。在接入指南里面,上来就是填写服务器配置,当你填写好服务器配置地址时候,发现一直提示配置失败,具体失败原因也不清楚。然后就只能懵逼的到处找资料,还好网络是个好东西,大神们也乐于分享,参考了很多资料后,发现如果想要对接成功,不仅是搭好自己的服务器就行,还需要一个跟微信平台交互的程序来确定自己服务器程序与微信成功对接,具体接入步接下来我会一步步写清楚。(本人能力有限,有错误的地方看到的大神们请留言或私信指出,我及时改正过来,以免误导新人

1.编写服务器对接代码

在第一章准备工作中,我们已经申请到自己的测试开发账号登录开发者测试账号 点击接口配置信息的修改按钮出现下图:
    接口配置
  我们填写好URL 和Token后,点击提交会一直提示配置失败,导致配置失败的原因是微信调用你填写的url接口没调通,或者是调通了返回的结果与微信验证的结果不一致。依据微信官方提供的接入文档可知,微信调用我们服务器程序的接口会提供如下参数:

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

如果在服务器不存在异常,微信平台能正常调用我们服务器接口的情况下,我们服务器只需原样返回echostr字符串,微信平台接收到这个字符串就能正常与我们服务器对接成功,在不考虑signature签名正确与否的情况下即可认为微信平台与我们自己服务器接入成功。 接入代码代码如下:

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.carwash.modules.wechat.service.WxConnectService;


/**
 * 描述:微信接入控制器
 * @author pwu
 * 创建时间:2016-6-15
 * @version v1.0
 */
@Controller
@RequestMapping(value="wx")
public class WxConnectController {
    @Autowired
    private WxConnectService connectService;

    //微信链接
    @RequestMapping(value="", method = RequestMethod.GET)
    public void connectWeChat(HttpServletRequest request,HttpServletResponse response) throws Exception{
        String signature = request.getParameter("signature");//签名验证
        String timestamp = request.getParameter("timestamp");//调用时间戳
        String nonce = request.getParameter("nonce");//随机数
        String echostr = request.getParameter("echostr");//随机字符串
        PrintWriter p = response.getWriter();
        //验证微信链接
        //checkSignature签名验证方法,初次测试连接时候可以把判断条件直接改为true
        //等微信跟平台连接成功,再去写接入验证代码。
        if(connectService.checkSignature(signature, timestamp, nonce)){
            p.print(echostr);//注意此处必须返回原样echostr以完成验证
        }
    }   
}

服务器其中代码编写完成后,启动服务。再回去填写微信测试开发者账号中的接口配置信息,点击提交,如果服务器能正常调访问的话,此时应该配置成功,即我们服务器与平台对接成功。

2.微信接入签名认证

 从微信官方给出的接入签名校验流程:
 1)将token、timestamp、nonce三个参数进行字典序排序
 2)将三个参数字符串拼接成一个字符串进行sha1加密
 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
 不难理解,要验证微信签名是否正确只需要根据上面的流程一步步操作即可,具体校验代码如下:
 

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

import org.springframework.stereotype.Service;

/**
 * 描述:处理微信接入服务(验证)
 * @author pwu 
 * 创建时间:2017-6-15
 * @version v1.0
 */
@Service
public class WxConnectService {

    private static String token = "token";//接口配置信息中填写的Token
    public boolean checkSignature(String signature, String timestamp, String nonce) {
        // 1.将token、timestamp、nonce三个参数进行字典序排序
        String[] arr = new String[] { token, timestamp, nonce };
        Arrays.sort(arr);

        // 2. 将三个参数字符串拼接成一个字符串进行sha1加密
        StringBuilder content = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr[i]);
        }
        String sha1 = getSha1(content.toString());
        //3.验证signature是否正确。
        return sha1 !=null ? sha1.equals(signature): false;
    }

    /**
     * 描述:获取sha1加密后十六进制字符串
     * @param str token,timestamp,nonce拼接字符串
     * @return sha1加密后十六进制字符串
     */
    private static String getSha1(String str) {
        if (null == str || 0 == str.length()){
            return null;
        }
        String strDigest = "";
        try {
            MessageDigest md = MessageDigest.getInstance("SHA1");
            byte[] digest = md.digest(str.getBytes());
            for (int i = 0; i < digest.length; i++) {
                strDigest += byteToHexStr(digest[i]);
            }
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return strDigest;
    }

    /**
     * 描述:将字节转换成十六进制字符串
     * @param dByte
     * @return 十六进制字符串
     */
    private static String byteToHexStr(byte dByte) {
        char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
        char[] tempArr = new char[2];
        tempArr[0] = Digit[(dByte >>> 4) & 0X0F];
        tempArr[1] = Digit[dByte & 0X0F];
        String s = new String(tempArr);
        return s;
    }
}

完成上面工作后,提交接口信息配置成功,则微信公众号平台接入成功,若失败请耐心排查原因,根据本人经验总结一般有如下原因:

1.用开发机作为服务器(花生壳,或者其他工具穿透映射)

1)可能外网无法访问本地服务器,导致微信无法调用接入接口,检测外网是否能正常访问开发机。
2)微信接入接口不通,在浏览器地址直接输入接口配置信息中的地址,通过DEBUG看看程序是否进入到对接接口。若不没有进入则证明接口不通,进一步查找其他原因。比如接口地址是否正确,服务器是否正常工作等。

2.用新浪云服务器,或者其他无法实时监测程序运行的情况

1)微信接入接口不通,先在本地通过在浏览器localhost:端口/**/wx看看是否能正常进入接口,若进去了证明接口正常,若进不去证明接口不通,进一步查找接口不通的原因。
2)在第一步检查通过的情况下,同步到云服务器又配置失败,检查下云服务器是否运行正常。项目是否正常运行,最简单的方法是在云服务中放一个能够访问的图片或者静态网页等,看能否正常访问。


自己也是萌新,以上都是自己开发中一点点的总结,遇到的问题和解决问题的能力有限,如有和我一样的萌新,遇到问题欢迎留言或私信,我们一起探讨互相学习。

2017-08-10 10:28:09 qq_33376750 阅读数 1014
  • 微信公众平台深度开发Java版v2.0单品课程——微信WEB...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    7641 人正在学习 去看看 翟东平


微信开发的第一步,服务器配置问题,我用的springMVC,不多说,图下边直接上代码。



import java.io.IOException;
import java.io.PrintWriter;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


import com.rebobee.wxutils.CheckoutUtil;


/**
 * 微信token
 * 
 * @author Atlas
 * 
 */
@Controller
@RequestMapping("/wx")
public class WXTokenController {


/**
* 微信消息接收和token验证

* @param model
* @param request
* @param response
* @throws IOException
*/
@RequestMapping("/token")
@ResponseBody
public void hello(Model model, HttpServletRequest request,
HttpServletResponse response) throws IOException {
boolean isGet = request.getMethod().toLowerCase().equals("get");
PrintWriter print;
if (isGet) {
// 微信加密签名
String signature = request.getParameter("signature");
// 时间戳
String timestamp = request.getParameter("timestamp");
// 随机数
String nonce = request.getParameter("nonce");
// 随机字符串
String echostr = request.getParameter("echostr");
// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (signature != null
&& CheckoutUtil.checkSignature(signature, timestamp, nonce)) {
try {
print = response.getWriter();
print.write(echostr);
print.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

}

工具类:

public class CheckoutUtil {
    // 与接口配置信息中的Token要一致
    private static String token = "pxdczS1BC";


    /**
     * 验证签名
     * 
     * @param signature
     * @param timestamp
     * @param nonce
     * @return
     */
    public static boolean checkSignature(String signature, String timestamp, String nonce) {
        String[] arr = new String[] { token, timestamp, nonce };
        // 将token、timestamp、nonce三个参数进行字典序排序
        // Arrays.sort(arr);
        sort(arr);
        StringBuilder content = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr[i]);
        }
        MessageDigest md = null;
        String tmpStr = null;


        try {
            md = MessageDigest.getInstance("SHA-1");
            // 将三个参数字符串拼接成一个字符串进行sha1加密
            byte[] digest = md.digest(content.toString().getBytes());
            tmpStr = byteToStr(digest);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        content = null;
        // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
        return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
    }


    /**
     * 将字节数组转换为十六进制字符串
     * 
     * @param byteArray
     * @return
     */
    private static String byteToStr(byte[] byteArray) {
        String strDigest = "";
        for (int i = 0; i < byteArray.length; i++) {
            strDigest += byteToHexStr(byteArray[i]);
        }
        return strDigest;
    }


    /**
     * 将字节转换为十六进制字符串
     * 
     * @param mByte
     * @return
     */
    private static String byteToHexStr(byte mByte) {
        char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
        char[] tempArr = new char[2];
        tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
        tempArr[1] = Digit[mByte & 0X0F];
        String s = new String(tempArr);
        return s;
    }
    public static void sort(String a[]) {
        for (int i = 0; i < a.length - 1; i++) {
            for (int j = i + 1; j < a.length; j++) {
                if (a[j].compareTo(a[i]) < 0) {
                    String temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
    }
}


2017-05-06 10:34:18 Minimum_Time_Hour 阅读数 2169
  • 微信公众平台深度开发Java版v2.0单品课程——微信WEB...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    7641 人正在学习 去看看 翟东平

今天为了接入微信,错了一整天,弄得我都快哭了!!

首先我的开发环境是Tomcat,在我的腾讯云服务其上跑的。

我的代码什么的都是正常的,因为都是照着参考文档写的,但是为什么就一直连不上我很头疼!搞了整整一上午,加前一天一下午!所以大家遇到事情还是不要随便放弃!多思考思考,虽然我没有怎么思考。

下面回归正题:我的配置失败的云因是因为Tomcat的默认端口是8080,而不是80.

这一个问题我也是今天才发现,以前我用的都是8080端口,老师教的时候并没有重点强调过。所以,就自然的认为8080端口和80端口就是同一个端口,大家一定要注意这一点!

解决办法:去网上搜一下Tomcat的8080端口更改为80端口的办法!

注意:这里为什么要把8080端口改成80端口,是因为微信强调了很多次,接入微信默认的端口是80,而Tomcat默认的端口是8080,这也是我们Java程序员最容易入坑的地方,这里做个笔记,希望帮助那些还在困惑的猿友们!

没有更多推荐了,返回首页