Java微信开发用户聊天_微信公众号开发:获取用户发送消息并实现回复(Java)

在上一篇文章写了如何配置服务器:

今天我就给大家说下如何获取用户发送消息并实现回复,自己在弄这个过程走了许多坑。

要实现消息获取和自动回复,需要了解微信是怎么实现这个过程:

我从微信官方文档摘取了下面比较重要的信息

接收普通消息

当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。

文本消息在请求的输出流中,而不是参数位置,参数是对xml中标签的解释。

文本消息

< ![CDATA[toUser] ]>

< ![CDATA[fromUser] ]>1348831860

< ![CDATA[text] ]>

< ![CDATA[this is a test] ]>

1234567890123456

参数描述

ToUserName

开发者微信号

FromUserName

发送方帐号(一个OpenID)

CreateTime

消息创建时间 (整型)

MsgType

text

Content

文本消息内容

MsgId

消息id,64位整型

被动回复用户消息

当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。严格来说,发送被动响应消息其实并不是一种接口,而是对微信服务器发过来消息的一次回复。

回复文本消息

< ![CDATA[toUser] ]>

< ![CDATA[fromUser] ]>12345678

< ![CDATA[text] ]>

< ![CDATA[你好] ]>

参数是否必须描述

ToUserName

接收方帐号(收到的OpenID)

FromUserName

开发者微信号

CreateTime

消息创建时间 (整型)

MsgType

text

Content

回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示)

在网上看到这张图片很好理解

545431476a3e01b010acaa26df1743f4.png

微信公众号开发文档说了,只有对服务器进行验证的时候才会使用到get请求到服务器的url中,其它一律使用post请求。

因此用户发送消息时,微信服务器是通过post请求到我们的服务器上。

可以看下我写的代码来理解这个过程,这个代码有部分利用上一篇文章说过的步骤:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.util.Date;

import javax.servlet.ServletException;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值