首頁 微信小程式 微信開發 分享java版微信機器人的實作方法

分享java版微信機器人的實作方法

Apr 28, 2017 am 10:49 AM

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Date;

    

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

    

import com.eiyoung.wechat.web.utils.Message;

import com.eiyoung.wechat.web.utils.ReplyMessage;

import org.apache.commons.io.IOUtils;

    

import com.thoughtworks.xstream.XStream;

import com.thoughtworks.xstream.io.xml.DomDriver;

    

    

public class WeChat extends HttpServlet {

    private static final long serialVersionUID = 1L;

    

    

    public WeChat() {

        super();

    }

    

    /**

     * 验证

     * @param request

     * @param response

     * @throws ServletException

     * @throws IOException

     */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter pw = response.getWriter();

        String echo = request.getParameter("echostr");

        System.out.print(echo);

        echo = new String(echo.getBytes("ISO-8859-1"),"UTF-8");

        pw.println(echo);

    }

    

    

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       response.setContentType("text/html;charset=UTF-8");

        PrintWriter pw = response.getWriter();

        String wxMsgXml = IOUtils.toString(request.getInputStream(),"utf-8");

        Message textMsg = null;

        try {

            textMsg = getMessage(wxMsgXml);

        } catch (Exception e) {

            e.printStackTrace();

        }

        StringBuffer replyMsg = new StringBuffer();

        if(textMsg != null){

            //增加你所需要的处理逻辑,这里只是简单重复消息

            replyMsg.append("您给我的消息是:");

            replyMsg.append(textMsg.getContent());

        }

        else{

            replyMsg.append(":)不是文本的消息,我暂时看不懂");

        }

        String returnXml = getReplyMessage(replyMsg.toString(), textMsg.getFromUserName(),textMsg.getToUserName());

        System.out.print(textMsg.toString());

        System.out.print(returnXml.toString());

        pw.println(returnXml);

    }

    

    private Message getMessage(String xml){

        XStream xstream = new XStream(new DomDriver());

        xstream.alias("xml", Message.class);

        xstream.aliasField("ToUserName", Message.class, "toUserName");

        xstream.aliasField("FromUserName", Message.class, "fromUserName");

        xstream.aliasField("CreateTime", Message.class, "createTime");

        xstream.aliasField("MsgType", Message.class, "messageType");

        xstream.aliasField("Content", Message.class, "content");

        xstream.aliasField("MsgId", Message.class, "msgId");

        Message Message = (Message)xstream.fromXML(xml);

        return Message;

    }

    

    private String getReplyMessage(String replyMsg,String toUserName,String fromUserName){

        ReplyMessage we = new ReplyMessage();

        we.setMessageType("text");

        we.setFuncFlag("0");

        we.setCreateTime(new Long(new Date().getTime()).toString());

        we.setContent(replyMsg);

        we.setToUserName(toUserName);

        we.setFromUserName(fromUserName);

        XStream xstream = new XStream(new DomDriver());

        xstream.alias("xml", ReplyMessage.class);

        xstream.aliasField("ToUserName", ReplyMessage.class, "toUserName");

        xstream.aliasField("FromUserName", ReplyMessage.class, "fromUserName");

        xstream.aliasField("CreateTime", ReplyMessage.class, "createTime");

        xstream.aliasField("MsgType", ReplyMessage.class, "messageType");

        xstream.aliasField("Content", ReplyMessage.class, "content");

        xstream.aliasField("FuncFlag", ReplyMessage.class, "funcFlag");

        String xml =xstream.toXML(we);

        return xml;

    }

    

    

}

    

===========================================================================

package com.eiyoung.wechat.web.utils;

    

/**

 * Created with IntelliJ IDEA.

 * User: sb

 * Date: 8/1/13

 * Time: 10:37 PM

 * To change this template use File | Settings | File Templates.

 */

public class ReplyMessage {

    

    private String FuncFlag;//消息编号

    private String fromUserName;//发送人

    private String toUserName;//接收人

    private String content;//内容

    private String messageType;//消息类型

    private String createTime;//创建日期

    

    

    public String getContent() {

        return content;

    }

    

    public void setContent(String content) {

        this.content = content;

    }

    

    public String getMessageType() {

        return messageType;

    }

    

    public void setMessageType(String messageType) {

        this.messageType = messageType;

    }

    

    public String getFromUserName() {

        return fromUserName;

    }

    

    public void setFromUserName(String fromUserName) {

        this.fromUserName = fromUserName;

    }

    

    public String getToUserName() {

        return toUserName;

    }

    

    public void setToUserName(String toUserName) {

        this.toUserName = toUserName;

    }

    

    public String getCreateTime() {

        return createTime;

    }

    

    public void setCreateTime(String createTime) {

        this.createTime = createTime;

    }

    

    public String getFuncFlag() {

        return FuncFlag;

    }

    

    public void setFuncFlag(String funcFlag) {

        FuncFlag = funcFlag;

    }

    

    public String toString(){

        return "createTime:"+getCreateTime()+"\\ntoUserName:"+getToUserName()+"\\n FromUserName:"+getFromUserName()+"\\nmessageType:"+getMessageType()+"\\ncontent:"+getContent();

    }

}

    

===============================================================================

package com.eiyoung.wechat.web.utils;

    

import java.util.Date;

    

/**

 * Created with IntelliJ IDEA.

 * User: sb

 * Date: 8/1/13

 * Time: 10:37 PM

 * To change this template use File | Settings | File Templates.

 */

public class Message {

    

    private String msgId;//消息编号

    private String fromUserName;//发送人

    private String toUserName;//接收人

    private String content;//内容

    private String messageType;//消息类型

    private String createTime;//创建日期

    

    

    public String getContent() {

        return content;

    }

    

    public void setContent(String content) {

        this.content = content;

    }

    

    public String getMessageType() {

        return messageType;

    }

    

    public void setMessageType(String messageType) {

        this.messageType = messageType;

    }

    

    public String getFromUserName() {

        return fromUserName;

    }

    

    public void setFromUserName(String fromUserName) {

        this.fromUserName = fromUserName;

    }

    

    public String getToUserName() {

        return toUserName;

    }

    

    public void setToUserName(String toUserName) {

        this.toUserName = toUserName;

    }

    

    public String getCreateTime() {

        return createTime;

    }

    

    public void setCreateTime(String createTime) {

        this.createTime = createTime;

    }

    

    public String getMsgId() {

        return msgId;

    }

    

    public void setMsgId(String msgId) {

        this.msgId = msgId;

    }

    

    public String toString(){

        return "msgId:"+getMsgId()+"\\ncreateTime:"+getCreateTime()+"\\ntoUserName:"+getToUserName()+"\\n FromUserName:"+getFromUserName()+"\\nmessageType:"+getMessageType()+"\\ncontent:"+getContent();

    }

}

==============================================================================

maven

 <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>3.8.1</version>

      <scope>test</scope>

    </dependency>

    <dependency>

      <groupId>javax.servlet</groupId>

      <artifactId>servlet-api</artifactId>

      <version>3.0-alpha-1</version>

    </dependency>

      <dependency>

          <groupId>joda-time</groupId>

          <artifactId>joda-time</artifactId>

          <version>2.2</version>

      </dependency>

      <dependency>

          <groupId>org.apache.commons</groupId>

          <artifactId>commons-io</artifactId>

          <version>1.3.2</version>

      </dependency>

      <dependency>

          <groupId>com.thoughtworks.xstream</groupId>

          <artifactId>xstream</artifactId>

          <version>1.4.3</version>

      </dependency>

登入後複製

以上是分享java版微信機器人的實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java 中的平方根 Java 中的平方根 Aug 30, 2024 pm 04:26 PM

Java 中的平方根

Java 中的完美數 Java 中的完美數 Aug 30, 2024 pm 04:28 PM

Java 中的完美數

Java 中的隨機數產生器 Java 中的隨機數產生器 Aug 30, 2024 pm 04:27 PM

Java 中的隨機數產生器

Java 中的阿姆斯壯數 Java 中的阿姆斯壯數 Aug 30, 2024 pm 04:26 PM

Java 中的阿姆斯壯數

Java中的Weka Java中的Weka Aug 30, 2024 pm 04:28 PM

Java中的Weka

Java 中的史密斯數 Java 中的史密斯數 Aug 30, 2024 pm 04:28 PM

Java 中的史密斯數

Java Spring 面試題 Java Spring 面試題 Aug 30, 2024 pm 04:29 PM

Java Spring 面試題

突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

突破或從Java 8流返回?

See all articles