javajava 微信 好友发消息群架好友的代码

(影子丝咖喱特)
(ChristineJueng)
(catherine)
第三方登录:14192人阅读
Java(49)
微信开发(8)
大家好,今天我给大家带来的是微信开发之发送消息。
用户关注微信号,那么肯定是为了得到某种功能,假如用户发送文本信息“电话”,我们能给用户发送我的联系电话,这样是不是很友好呢?
好,昨天我们已经接受到了用户发送的信息,今天我们就对用户进行回复消息吧!
首先,回复消息有6个种类:
1 回复文本消息
2 回复图片消息
3 回复语音消息
4 回复视频消息
5 回复音乐消息
6 回复图文消息
我们先来做一个简单的回复文本消息的例子吧!
回复文本消息
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[text]]&&/MsgType&
&Content&&![CDATA[你好]]&&/Content&
&/xml&1.新建发送消息基本对象com.ansitech.weixin.sdk.message.OutputMessage.java
* 微信公众平台(JAVA) SDK
* Copyright (c) 2014, Ansitech Network Technology Co.,Ltd All rights reserved.
* /weixin/sdk/
* Licensed under the Apache License, Version 2.0 (the &License&);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an &AS IS& BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
package com.ansitech.weixin.sdk.
* 微信发送被动响应消息的抽象类
* &p&应用程序需要定义一个子类,来实现具体方法&/p&
* @author qsyang&&
public abstract class OutputMessage implements java.io.Serializable {
* 接收方帐号(收到的OpenID)
private String ToUserN
* 开发者微信号
private String FromUserN
* 消息创建时间 (整型)
private Long CreateT
* 获取 接收方帐号(收到的OpenID)
* @return 接收方帐号(收到的OpenID)
public String getToUserName() {
return ToUserN
* 设置 接收方帐号(收到的OpenID)
* @return 接收方帐号(收到的OpenID)
public String getFromUserName() {
return FromUserN
* 获取 消息创建时间 (整型)
* @return 消息创建时间 (整型)
public Long getCreateTime() {
return CreateT
* 获取 消息类型
* @return 消息类型
public abstract String getMsgType();
}2.新建文本消息发送对象com.ansitech.weixin.sdk.message.TextOutputMessage.java
* 微信公众平台(JAVA) SDK
* Copyright (c) 2014, Ansitech Network Technology Co.,Ltd All rights reserved.
* /weixin/sdk/
* Licensed under the Apache License, Version 2.0 (the &License&);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an &AS IS& BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
package com.ansitech.weixin.sdk.
* 这个类实现了&tt&OutputMessage&/tt&,用来回复文本消息
* &p&提供了获取文本内容&code&getContent()&/code&等主要方法.&/p&
* @author qsyang&&
public class TextOutputMessage extends OutputMessage {
* 消息类型:文本消息
private String MsgType = &text&;
* 文本消息
private String C
* 创建一个新的 Output Message.并且MsgType的值为text.
public TextOutputMessage() {
* 创建一个自定义文本内容content的Output Message.
* @param content 文本内容
public TextOutputMessage(String content) {
* 获取 消息类型
* @return 消息类型
public String getMsgType() {
return MsgT
* 获取 文本消息
* @return 文本消息
public String getContent() {
* 设置 文本消息
* @param content 文本消息
public void setContent(String content) {
}3.修改com.ansitech.weixin.sdk.WeixinUrlFilter.java中接受文本消息部分代码。
package com.ansitech.weixin.
import com.ansitech.weixin.sdk.message.InputM
import com.ansitech.weixin.sdk.message.MsgT
import com.ansitech.weixin.sdk.message.OutputM
import com.ansitech.weixin.sdk.message.TextOutputM
import com.ansitech.weixin.sdk.util.SHA1;
import com.thoughtworks.xstream.XS
import com.thoughtworks.xstream.core.util.QuickW
import com.thoughtworks.xstream.io.HierarchicalStreamW
import com.thoughtworks.xstream.io.xml.DomD
import com.thoughtworks.xstream.io.xml.PrettyPrintW
import com.thoughtworks.xstream.io.xml.XppD
public class WeixinUrlFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)
HttpServletResponse response = (HttpServletResponse)
if (isGet) {
//根据消息类型获取对应的消息内容
if (msgType.equals(MsgType.Text.toString())) {
//文本消息
System.out.println(&开发者微信号:& + inputMsg.getToUserName());
System.out.println(&发送方帐号:& + inputMsg.getFromUserName());
System.out.println(&消息创建时间:& + inputMsg.getCreateTime());
System.out.println(&消息内容:& + inputMsg.getContent());
System.out.println(&消息Id:& + inputMsg.getMsgId());
//发送文本消息 start
XStream xstream = new XStream(new XppDriver() {
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
protected void writeText(QuickWriter writer,
String text) {
if (!text.startsWith(&&![CDATA[&)) {
text = &&![CDATA[& + text + &]]&&;
writer.write(text);
//创建文本发送消息对象
TextOutputMessage outputMsg = new TextOutputMessage();
outputMsg.setContent(&你的消息已经收到,谢谢!&);
setOutputMsgInfo(outputMsg, inputMsg);
//设置对象转换的XML根节点为xml
xstream.alias(&xml&, outputMsg.getClass());
//将对象转换为XML字符串
String xml = xstream.toXML(outputMsg);
//将内容发送给微信服务器,发送到用户手机
response.getWriter().write(xml);
} catch (Exception ex) {
System.out.println(&消息接受和发送出现异常!&);
ex.printStackTrace();
//设置详细信息
private static void setOutputMsgInfo(OutputMessage oms,
InputMessage msg) throws Exception {
// 设置发送信息
Class&?& outMsg = oms.getClass().getSuperclass();
Field CreateTime = outMsg.getDeclaredField(&CreateTime&);
Field ToUserName = outMsg.getDeclaredField(&ToUserName&);
Field FromUserName = outMsg.getDeclaredField(&FromUserName&);
ToUserName.setAccessible(true);
CreateTime.setAccessible(true);
FromUserName.setAccessible(true);
CreateTime.set(oms, new Date().getTime());
ToUserName.set(oms, msg.getFromUserName());
FromUserName.set(oms, msg.getToUserName());
}以上代码给出了发送消息的部分,“...”的部分请参考我的上俩篇文章。
如有疑问,请留言。
你可以微信关注我的订阅号:vzhanqun 微站管家
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:425092次
积分:4097
积分:4097
排名:第5637名
原创:77篇
评论:359条获得与公众号进行交互的用户信息
1. 获得AccessToken
2. 获得OpenID
3. 获得用户信息
1. 将配置参数封装起来:
创建config.php文件,内容如下:
//填写自己公众号的appid
define(&APPID&, &***********&);
//填写自己公众号的secret
define(&APPSECRET&, &**************************&);
//定义全局Token
define(&TOKEN&, &hhwxjj&);2. 将功能函数封装起来,内容如下:
function getUserNickName($openId = null){
if(empty($openId))return &OpenId is Empty&;
$accessToken = getAccessToken();
//构造Get请求URL
$url = &https://api./cgi-bin/user/info?access_token={$accessToken}&openid={$openId}&;
//通过CURL提交GET请求
$result = https_request($url);
//解码JSON数据
$strjson=json_decode($result);
//获得Token
$token = $
function getAccessToken(){
//构造Get请求URL
$url = &https://api./cgi-bin/token?grant_type=client_credential&appid=&.APPID.&&secret=&.APPSECRET;
//通过CURL提交GET请求
$result = https_request($url);
//解码JSON数据
$strjson=json_decode($result);
//获得Token
$token = $strjson-&access_
function https_request($url, $data = null, $method = 'GET'){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if($method != 'GET'){
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
?&3. 建立用户操作类
建立文件GetUserInfo.php, 内容如下:
class GetUserInfo{
private $openId;
public function __construct($openId){
$this-&openId = $openId;
public function getUserInfo(){
$usenikename = getUserNickName($this-&openId);
4. 在入口文件index.php中引入上述文件,并增加操作响应来测试:
require('config.php');
require('util.php');
require('GetUserInfo.php');
&pre name=&code& class=&php&&//文本消息响应信息
private function responseText($object)
$getUserInfo = new GetUserInfo($object-&FromUserName);
$funcFlag = 0;
$contentStr = &你发送的内容为:&.$object-&Content.$getUserInfo-&getUserInfo();
$resultStr = $this-&transmitText($object, $contentStr, $funcFlag);
return $resultS
在微信中向公众号发送任意信息,会回复:“您发送的信息是:[收到的信息][用户昵称]”
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:11820次
排名:千里之外
转载:22篇
(3)(1)(3)(2)(10)(7)(4)(2)}

我要回帖

更多关于 java 微信 好友发消息 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信