{"id":28954,"date":"2024-11-25T13:30:55","date_gmt":"2024-11-25T05:30:55","guid":{"rendered":"https:\/\/fwq.ai\/blog\/28954\/"},"modified":"2024-11-25T13:30:55","modified_gmt":"2024-11-25T05:30:55","slug":"%e5%88%a9%e7%94%a8java%e5%bc%80%e5%8f%91%e5%be%ae%e4%bf%a1%e5%85%ac%e4%bc%97%e5%8f%b7%e6%a1%88%e4%be%8b%e4%bb%a3%e7%a0%81","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/28954\/","title":{"rendered":"\u5229\u7528java\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u6848\u4f8b\u4ee3\u7801"},"content":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u5229\u7528java\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u6848\u4f8b\u4ee3\u7801\uff0c\u5982\u4f55\u63a5\u5165\u516c\u4f17\u53f7\uff0c\u8ba2\u9605\u53f7\u600e\u4e48\u6837,\u5177\u6709\u4e00\u5b9a\u7684\u53c2\u8003\u4ef7\u503c\uff0c\u611f\u5174\u8da3\u7684\u5c0f\u4f19\u4f34\u4eec\u53ef\u4ee5\u53c2\u8003\u4e00\u4e0b<\/p>\n<p>\u5fae\u4fe1\u516c\u4f17\u53f7\u5f00\u53d1\u4e00\u822c\u662f\u9488\u5bf9\u4f01\u4e1a\u548c\u7ec4\u7ec7\u7684\uff0c\u4e2a\u4eba\u4e00\u822c\u53ea\u80fd\u7533\u8bf7\u8ba2\u9605\u53f7\uff0c\u5e76\u4e14\u8c03\u7528\u7684\u6709\u9650\uff0c\u4e0b\u9762\u6211\u4eec\u5c31\u6765\u7b80\u5355\u7684\u63cf\u8ff0\u4e0b<strong>\u63a5\u5165\u516c\u4f17\u53f7\u7684\u6b65\u9aa4<\/strong>\uff1a<\/p>\n<p>1\u3001\u9996\u5148\u4f60\u9700\u8981\u4e00\u4e2a\u90ae\u7bb1\u5728\u5fae\u4fe1\u516c\u4f17\u53f7\u5e73\u53f0\u8fdb\u884c\u6ce8\u518c\uff1b<br \/>&nbsp;&nbsp;&nbsp;&nbsp; \u6ce8\u518c\u7684\u65b9\u5f0f\u6709\u8ba2\u9605\u53f7\u3001\u516c\u4f17\u53f7\u3001\u5c0f\u7a0b\u5e8f\u548c\u4f01\u4e1a\u53f7\uff0c\u4e2a\u4eba\u6211\u4eec\u8fd9\u91cc\u53ea\u80fd\u9009\u62e9\u8ba2\u9605\u53f7<\/p>\n<p>2\u3001\u6ce8\u518c\u5b8c\u540e\uff0c\u6211\u4eec\u767b\u5f55\u5230\u516c\u4f17\u53f7\u5e73\u53f0&#8212;&gt;\u5f00\u53d1&#8212;&gt;\u57fa\u672c\u914d\u7f6e,\u8fd9\u91cc\u9700\u8981\u586b\u5199URL\u548ctoken\uff0cURL\u5c31\u662f\u6211\u4eec\u4f7f\u7528\u670d\u52a1\u5668\u7684\u63a5\u53e3\uff1b<\/p>\n<p>3\u3001Java Web\u670d\u52a1\u5668\u7a0b\u5e8f\u7f16\u8bd1\u597d\u4e14\u5728\u670d\u52a1\u5668\u4e0a\u90e8\u7f72\u53ef\u4ee5\u8fd0\u884c\u7684\u8bdd\uff0c\u53ef\u5728\u5fae\u4fe1\u516c\u4f17\u53f7\u8fdb\u884c\u5728\u7ebf\u63a5\u53e3\uff1a<\/p>\n<p><span>\u7acb\u5373\u5b66\u4e60<\/span>\u201c\u201d\uff1b<\/p>\n<p>&nbsp;&nbsp;&nbsp; 1\uff09\u3001\u9009\u62e9\u5408\u9002\u7684\u63a5\u53e3<br \/>&nbsp;&nbsp;&nbsp; 2\uff09\u3001\u7cfb\u7edf\u4f1a\u751f\u6210\u8be5\u63a5\u53e3\u7684\u53c2\u6570\u8868\uff0c\u60a8\u53ef\u4ee5\u76f4\u63a5\u5728\u6587\u672c\u6846\u5185\u586b\u5165\u5bf9\u5e94\u7684\u53c2\u6570\u503c\uff08\u7ea2\u8272\u661f\u53f7\u8868\u793a\u8be5\u5b57\u6bb5\u5fc5\u586b\uff09<br \/>&nbsp;&nbsp;&nbsp; 3\uff09\u3001\u70b9\u51fb\u68c0\u67e5\u95ee\u9898\uff0c\u5373\u53ef\u5f97\u5230\u76f8\u5e94\u7684\u8c03\u8bd5\u4fe1\u606f<\/p>\n<p>&nbsp;&nbsp; eg:\u83b7\u53d6access_token\u7684\u6b65\u9aa4\uff1a<\/p>\n<p>&nbsp;&nbsp; 1\uff09\u3001\u63a5\u53e3\u7c7b\u578b\uff1a\u57fa\u7840\u652f\u6301<br \/>&nbsp;&nbsp; 2\uff09\u3001\u63a5\u53e3\u5217\u8868\uff1a\u83b7\u53d6access_token\u63a5\u53e3\/token<br \/>&nbsp;&nbsp; 3\uff09\u3001\u586b\u5199\u76f8\u5e94\u7684\u53c2\u6570\uff1agrant_type\u3001appid\u3001secret<br \/>&nbsp;&nbsp; 4\uff09\u3001\u70b9\u51fb\u68c0\u67e5\u95ee\u9898<br \/>&nbsp;&nbsp; 5\uff09\u3001\u9a8c\u8bc1\u6210\u529f\u4f1a\u8fd4\u56de\u7ed3\u679c\u548c\u63d0\u793a\uff0c\u7ed3\u679c\u4e3a\uff1a200 ok,\u63d0\u793a\uff1aRequest successful\u5373\u8868\u793a\u9a8c\u8bc1\u6210\u529f<\/p>\n<p>&nbsp;&nbsp; \u6211\u4eec\u8fd9\u91cc\u9a8c\u8bc1\u6bd4\u8f83\u591a\u7684\u662f\u6d88\u606f\u63a5\u53e3\u8c03\u8bd5\uff1a\u6587\u672c\u6d88\u606f\u3001\u6d88\u606f\u3001\u8bed\u97f3\u6d88\u606f\u3001\u6d88\u606f\u3001etc<\/p>\n<p>4\u3001\u63a5\u53e3\u6709\u4e0d\u7406\u89e3\u7684\u5730\u65b9\uff0c\u53ef\u8fdb\u5165\u5f00\u53d1&#8211;&gt;\u5f00\u53d1\u8005\u5de5\u5177&#8211;&gt;\u5f00\u53d1\u8005\u6587\u6863\u8fdb\u884c<\/p>\n<p>5\u3001\u63a5\u53e3\u6743\u9650\uff1a\u8ba2\u9605\u53f7\u4e3b\u8981\u6709\u57fa\u7840\u652f\u6301\u3001\u63a5\u6536\u6d88\u606f\u53ca\u7f51\u9875\u670d\u52a1\u91cc\u9762\u7684\u4e00\u4e9b\u63a5\u53e3<\/p>\n<p>\u4e0b\u9762\u6211\u4eec\u4e3b\u8981\u8bb2<strong>\u8ba2\u9605\u53f7\u600e\u4e48\u6837\u63a5\u6536\u6d88\u606f<\/strong>\u7684\u6848\u4f8b\uff1a<\/p>\n<p>1\u3001\u9700\u8981\u7533\u8bf7\u4e00\u4e2a\u4e2a\u4eba\u5fae\u4fe1\u8ba2\u9605\u53f7<br \/>2\u3001url\u670d\u52a1\u5668\u548c\u670d\u52a1\u5668\u7aef\u4ee3\u7801\u90e8\u7f72\uff08\u53ef\u4ee5\u7528\u817e\u8baf\u4e91or\u963f\u91cc\u4e91\u670d\u52a1\u5668\uff09<\/p>\n<p>1\uff09\u3001Acs.java\u7c7b\uff0c\u9a8c\u8bc1\u6765\u81ea\u5fae\u4fe1\u670d\u52a1\u5668\u548c\u5fae\u4fe1\u670d\u52a1\u5668\u7684\u6d88\u606f\u5904\u7406<\/p>\n<p><\/p>\n<pre>package&nbsp;cn.jon.wechat.servlet;&nbsp;\r\n&nbsp;\r\nimport&nbsp;java.io.IOException;&nbsp;\r\nimport&nbsp;java.io.PrintWriter;&nbsp;\r\n&nbsp;\r\nimport&nbsp;javax.servlet.ServletException;&nbsp;\r\nimport&nbsp;javax.servlet.http.HttpServlet;&nbsp;\r\nimport&nbsp;javax.servlet.http.HttpServletRequest;&nbsp;\r\nimport&nbsp;javax.servlet.http.HttpServletResponse;&nbsp;\r\n&nbsp;\r\nimport&nbsp;cn.jon.wechat.service.AccountsService;&nbsp;\r\nimport&nbsp;cn.jon.wechat.utils.SignUtil;&nbsp;\r\n&nbsp;\r\npublic&nbsp;class&nbsp;AccountsServlet&nbsp;extends&nbsp;HttpServlet&nbsp;{&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;AccountsServlet()&nbsp;{&nbsp;\r\n&nbsp;super();&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;destroy()&nbsp;{&nbsp;\r\n&nbsp;super.destroy();&nbsp;\r\n&nbsp;\/\/&nbsp;Put&nbsp;your&nbsp;code&nbsp;here&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u786e\u8ba4\u8bf7\u6c42\u6765\u81ea\u4e8e\u5fae\u4fe1\u670d\u52a1\u5668&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;doGet(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)&nbsp;\r\n&nbsp;&nbsp;throws&nbsp;ServletException,&nbsp;IOException&nbsp;{&nbsp;\r\n&nbsp;&nbsp;System.out.println(\"\u63a5\u53e3\u6d4b\u8bd5\u5f00\u59cb\uff01\uff01\uff01\");&nbsp;\r\n&nbsp;&nbsp;\/\/\u5fae\u4fe1\u52a0\u5bc6\u7b7e\u540d&nbsp;\r\n&nbsp;&nbsp;String&nbsp;signature&nbsp;=&nbsp;request.getParameter(\"signature\");&nbsp;\r\n&nbsp;&nbsp;\/\/\u65f6\u95f4\u6233&nbsp;\r\n&nbsp;&nbsp;String&nbsp;timestamp&nbsp;=&nbsp;request.getParameter(\"timestamp\");&nbsp;\r\n&nbsp;&nbsp;\/\/\u968f\u673a\u6570&nbsp;\r\n&nbsp;&nbsp;String&nbsp;nonce&nbsp;=&nbsp;request.getParameter(\"nonce\");&nbsp;\r\n&nbsp;&nbsp;\/\/\u968f\u673a\u5b57\u7b26\u4e32&nbsp;\r\n&nbsp;&nbsp;String&nbsp;echostr&nbsp;=&nbsp;request.getParameter(\"echostr\");&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;&nbsp;PrintWriter&nbsp;out&nbsp;=&nbsp;response.getWriter();&nbsp;\r\n&nbsp;&nbsp;\/\/\u901a\u8fc7\u6821\u9a8csignature\u5bf9\u8bf7\u6c42\u8fdb\u884c\u6821\u9a8c\uff0c\u82e5\u6821\u9a8c\u6210\u529f\u5219\u539f\u6837\u8fd4\u56deechostr\uff0c\u8868\u793a\u63a5\u5165\u6210\u529f\uff0c\u5426\u5219\u63a5\u5165\u5931\u8d25&nbsp;\r\n&nbsp;&nbsp;if(SignUtil.checkSignature(signature,timestamp,nonce)){&nbsp;\r\n&nbsp;&nbsp;out.print(echostr);&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;out.close();&nbsp;\r\n&nbsp;&nbsp;out&nbsp;=&nbsp;null;&nbsp;\r\n\/\/&nbsp;&nbsp;response.encodeRedirectURL(\"success.jsp\");&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u5904\u7406\u5fae\u4fe1\u670d\u52a1\u5668\u53d1\u6765\u7684\u6d88\u606f&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;doPost(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)&nbsp;\r\n&nbsp;&nbsp;throws&nbsp;ServletException,&nbsp;IOException&nbsp;{&nbsp;\r\n&nbsp;\/\/\u6d88\u606f\u7684\u63a5\u53d7\u3001\u5904\u7406\u3001\u54cd\u5e94&nbsp;\r\n&nbsp;request.setCharacterEncoding(\"utf-8\");&nbsp;\r\n&nbsp;response.setCharacterEncoding(\"utf-8\");&nbsp;\r\n&nbsp;\/\/\u8c03\u7528\u6838\u5fc3\u4e1a\u52a1\u7c7b\u578b\u63a5\u53d7\u6d88\u606f\u3001\u5904\u7406\u6d88\u606f&nbsp;\r\n&nbsp;String&nbsp;respMessage&nbsp;=&nbsp;AccountsService.processRequest(request);&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;\/\/\u54cd\u5e94\u6d88\u606f&nbsp;\r\n&nbsp;PrintWriter&nbsp;out&nbsp;=&nbsp;response.getWriter();&nbsp;\r\n&nbsp;out.print(respMessage);&nbsp;\r\n&nbsp;out.close();&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;init()&nbsp;throws&nbsp;ServletException&nbsp;{&nbsp;\r\n&nbsp;\/\/&nbsp;Put&nbsp;your&nbsp;code&nbsp;here&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>2\uff09\u3001SignUtil.java\u7c7b\uff0c\u8bf7\u6c42\u6821\u9a8c\u5de5\u5177\u7c7b\uff0ctoken\u9700\u8981\u548c\u5fae\u4fe1\u4e2d\u586b\u5199\u7684token\u4e00\u81f4<\/p>\n<p><\/p>\n<pre>package&nbsp;cn.jon.wechat.utils;&nbsp;\r\n&nbsp;\r\nimport&nbsp;java.security.MessageDigest;&nbsp;\r\nimport&nbsp;java.security.NoSuchAlgorithmException;&nbsp;\r\nimport&nbsp;java.util.Arrays;&nbsp;\r\nimport&nbsp;java.util.Iterator;&nbsp;\r\nimport&nbsp;java.util.Map;&nbsp;\r\nimport&nbsp;java.util.Set;&nbsp;\r\nimport&nbsp;java.util.concurrent.ConcurrentHashMap;&nbsp;\r\n&nbsp;\r\n\/**&nbsp;\r\n&nbsp;*&nbsp;\u8bf7\u6c42\u6821\u9a8c\u5de5\u5177\u7c7b&nbsp;\r\n&nbsp;*&nbsp;@author&nbsp;jon&nbsp;\r\n&nbsp;*\/&nbsp;\r\npublic&nbsp;class&nbsp;SignUtil&nbsp;{&nbsp;\r\n&nbsp;\/\/\u4e0e\u5fae\u4fe1\u914d\u7f6e\u4e2d\u7684\u7684Token\u4e00\u81f4&nbsp;\r\n&nbsp;private&nbsp;static&nbsp;String&nbsp;token&nbsp;=&nbsp;\"\";&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;boolean&nbsp;checkSignature(String&nbsp;signature,&nbsp;String&nbsp;timestamp,&nbsp;\r\n&nbsp;&nbsp;String&nbsp;nonce)&nbsp;{&nbsp;\r\n&nbsp;String[]&nbsp;arra&nbsp;=&nbsp;new&nbsp;String[]{token,timestamp,nonce};&nbsp;\r\n&nbsp;\/\/\u5c06signature,timestamp,nonce\u7ec4\u6210\u6570\u7ec4\u8fdb\u884c\u5b57\u5178\u6392\u5e8f&nbsp;\r\n&nbsp;Arrays.sort(arra);&nbsp;\r\n&nbsp;StringBuilder&nbsp;sb&nbsp;=&nbsp;new&nbsp;StringBuilder();&nbsp;\r\n&nbsp;for(int&nbsp;i=0;i&lt;arra.length&gt;&amp;gt;&amp;gt;4)&amp;amp;0X0F];&nbsp;\r\n&nbsp;tmpArr[1]&nbsp;=&nbsp;Digit[dByte&amp;amp;0X0F];&nbsp;\r\n&nbsp;String&nbsp;s&nbsp;=&nbsp;new&nbsp;String(tmpArr);&nbsp;\r\n&nbsp;return&nbsp;s;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;\r\n&nbsp;\/*byte&nbsp;dByte&nbsp;=&nbsp;'A';&nbsp;\r\n&nbsp;System.out.println(byteToHexStr(dByte));*\/&nbsp;\r\n&nbsp;Map&lt;string&gt;&nbsp;map&nbsp;=&nbsp;new&nbsp;ConcurrentHashMap&lt;string&gt;();&nbsp;\r\n&nbsp;map.put(\"4\",&nbsp;\"zhangsan\");&nbsp;\r\n&nbsp;map.put(\"100\",&nbsp;\"lisi\");&nbsp;\r\n&nbsp;Set&nbsp;set&nbsp;=&nbsp;map.keySet();&nbsp;\r\n&nbsp;Iterator&nbsp;iter&nbsp;=&nbsp;set.iterator();&nbsp;\r\n&nbsp;while(iter.hasNext()){&nbsp;\r\n\/\/&nbsp;&nbsp;String&nbsp;keyV&nbsp;=&nbsp;(String)&nbsp;iter.next();&nbsp;\r\n&nbsp;&nbsp;String&nbsp;key&nbsp;=(String)iter.next();&nbsp;\r\n&nbsp;&nbsp;System.out.println(map.get(key));&nbsp;\r\n\/\/&nbsp;&nbsp;System.out.println(map.get(iter.next()));&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\/*for(int&nbsp;i=0;i&lt;map.size&gt;&lt;p&gt;3\uff09\u3001AccountsService.java\u670d\u52a1\u7c7b\uff0c\u4e3b\u8981\u662f\u6d88\u606f\u7684\u8bf7\u6c42\u548c\u54cd\u5e94\u5904\u7406\uff0c\u5e76\u4e14\u5f53\u7528\u6237\u5173\u6ce8\u4f60\u7684\u516c\u4f17\u53f7\u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u8bbe\u7f6e\u9ed8\u8ba4\u63a8\u9001\u6d88\u606f&lt;br&gt;&lt;\/p&gt;\n&lt;p class=\"jb51code\"&gt;&lt;br&gt;&lt;\/p&gt;\n&lt;pre class=\"brush:java;\"&gt;package&nbsp;cn.jon.wechat.service;&nbsp;\r\n&nbsp;\r\nimport&nbsp;java.util.Date;&nbsp;\r\nimport&nbsp;java.util.Map;&nbsp;\r\n&nbsp;\r\nimport&nbsp;javax.servlet.http.HttpServletRequest;&nbsp;\r\n&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.req.ImageMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.req.LinkMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.req.LocationMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.req.VideoMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.req.VoiceMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.resp.TextMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.utils.MessageUtil;&nbsp;\r\n&nbsp;\r\n\/**&nbsp;\r\n&nbsp;*&nbsp;\u89e3\u8026\uff0c\u4f7f\u63a7\u5236\u5c42\u4e0e\u4e1a\u52a1\u903b\u8f91\u5c42\u5206\u79bb\u5f00\u6765\uff0c\u4e3b\u8981\u5904\u7406\u8bf7\u6c42\uff0c\u54cd\u5e94&nbsp;\r\n&nbsp;*&nbsp;@author&nbsp;jon&nbsp;\r\n&nbsp;*\/&nbsp;\r\npublic&nbsp;class&nbsp;AccountsService&nbsp;{&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;String&nbsp;processRequest(HttpServletRequest&nbsp;request)&nbsp;{&nbsp;\r\n&nbsp;String&nbsp;respMessage&nbsp;=&nbsp;null;&nbsp;\r\n&nbsp;\/\/\u9ed8\u8ba4\u8fd4\u56de\u7684\u6587\u672c\u6d88\u606f\u5185\u5bb9&nbsp;\r\n&nbsp;String&nbsp;respContent&nbsp;=&nbsp;\"\u8bf7\u6c42\u5904\u7406\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u5c1d\u8bd5\uff01\";&nbsp;\r\n&nbsp;try&nbsp;{&nbsp;\r\n&nbsp;&nbsp;\/\/xml\u8bf7\u6c42\u89e3\u6790&nbsp;\r\n&nbsp;&nbsp;Map&lt;string&gt;&nbsp;requestMap&nbsp;=&nbsp;MessageUtil.pareXml(request);&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;&nbsp;\/\/\u53d1\u9001\u65b9\u8d26\u53f7\uff08open_id\uff09&nbsp;\r\n&nbsp;&nbsp;String&nbsp;fromUserName&nbsp;=&nbsp;requestMap.get(\"FromUserName\");&nbsp;\r\n&nbsp;&nbsp;\/\/\u516c\u4f17\u8d26\u53f7&nbsp;\r\n&nbsp;&nbsp;String&nbsp;toUserName&nbsp;=&nbsp;requestMap.get(\"ToUserName\");&nbsp;\r\n&nbsp;&nbsp;\/\/\u6d88\u606f\u7c7b\u578b&nbsp;\r\n&nbsp;&nbsp;String&nbsp;msgType&nbsp;=&nbsp;requestMap.get(\"MsgType\");&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;&nbsp;\/\/\u9ed8\u8ba4\u56de\u590d\u6b64\u6587\u672c\u6d88\u606f&nbsp;\r\n&nbsp;&nbsp;TextMessage&nbsp;defaultTextMessage&nbsp;=&nbsp;new&nbsp;TextMessage();&nbsp;\r\n&nbsp;&nbsp;defaultTextMessage.setToUserName(fromUserName);&nbsp;\r\n&nbsp;&nbsp;defaultTextMessage.setFromUserName(toUserName);&nbsp;\r\n&nbsp;&nbsp;defaultTextMessage.setCreateTime(new&nbsp;Date().getTime());&nbsp;\r\n&nbsp;&nbsp;defaultTextMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_TEXT);&nbsp;\r\n&nbsp;&nbsp;defaultTextMessage.setFuncFlag(0);&nbsp;\r\n&nbsp;&nbsp;\/\/&nbsp;\u7531\u4e8ehref\u5c5e\u6027\u503c\u5fc5\u987b\u7528\u53cc\u5f15\u53f7\u5f15\u8d77\uff0c\u8fd9\u4e0e\u5b57\u7b26\u4e32\u672c\u8eab\u7684\u53cc\u5f15\u53f7\u51b2\u7a81\uff0c\u6240\u4ee5\u8981\u8f6c\u4e49&nbsp;\r\n&nbsp;&nbsp;defaultTextMessage.setContent(\"\u6b22\u8fce\u8bbf\u95ee&lt;a&gt;jon\u7684\u535a\u5ba2&lt;\/a&gt;!\");&nbsp;\r\n\/\/&nbsp;&nbsp;defaultTextMessage.setContent(getMainMenu());&nbsp;\r\n&nbsp;&nbsp;\/\/&nbsp;\u5c06\u6587\u672c\u6d88\u606f\u5bf9\u8c61\u8f6c\u6362\u6210xml\u5b57\u7b26\u4e32&nbsp;\r\n&nbsp;&nbsp;respMessage&nbsp;=&nbsp;MessageUtil.textMessageToXml(defaultTextMessage);&nbsp;\r\n&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;&nbsp;\/\/\u6587\u672c\u6d88\u606f&nbsp;\r\n&nbsp;&nbsp;if(msgType.equals(MessageUtil.MESSSAGE_TYPE_TEXT)){&nbsp;\r\n&nbsp;&nbsp;\/\/respContent&nbsp;=&nbsp;\"Hi,\u60a8\u53d1\u9001\u7684\u662f\u6587\u672c\u6d88\u606f\uff01\";&nbsp;\r\n&nbsp;&nbsp;\/\/\u56de\u590d\u6587\u672c\u6d88\u606f&nbsp;\r\n&nbsp;&nbsp;TextMessage&nbsp;textMessage&nbsp;=&nbsp;new&nbsp;TextMessage();&nbsp;\r\n\/\/&nbsp;&nbsp;textMessage.setToUserName(toUserName);&nbsp;\r\n\/\/&nbsp;&nbsp;textMessage.setFromUserName(fromUserName);&nbsp;\r\n&nbsp;&nbsp;\/\/\u8fd9\u91cc\u9700\u8981\u6ce8\u610f\uff0c\u5426\u5219\u65e0\u6cd5\u56de\u590d\u6d88\u606f\u7ed9\u7528\u6237\u4e86&nbsp;\r\n&nbsp;&nbsp;textMessage.setToUserName(fromUserName);&nbsp;\r\n&nbsp;&nbsp;textMessage.setFromUserName(toUserName);&nbsp;\r\n&nbsp;&nbsp;textMessage.setCreateTime(new&nbsp;Date().getTime());&nbsp;\r\n&nbsp;&nbsp;textMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_TEXT);&nbsp;\r\n&nbsp;&nbsp;textMessage.setFuncFlag(0);&nbsp;\r\n&nbsp;&nbsp;respContent&nbsp;=&nbsp;\"Hi\uff0c\u4f60\u53d1\u7684\u6d88\u606f\u662f\uff1a\"+requestMap.get(\"Content\");&nbsp;\r\n&nbsp;&nbsp;textMessage.setContent(respContent);&nbsp;\r\n&nbsp;&nbsp;respMessage&nbsp;=&nbsp;MessageUtil.textMessageToXml(textMessage);&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;\/\/\u56fe\u7247\u6d88\u606f&nbsp;\r\n&nbsp;&nbsp;else&nbsp;if(msgType.equals(MessageUtil.MESSSAGE_TYPE_IMAGE)){&nbsp;\r\n&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;ImageMessage&nbsp;imageMessage=new&nbsp;ImageMessage();&nbsp;\r\n&nbsp;&nbsp;imageMessage.setToUserName(fromUserName);&nbsp;\r\n&nbsp;&nbsp;imageMessage.setFromUserName(toUserName);&nbsp;\r\n&nbsp;&nbsp;imageMessage.setCreateTime(new&nbsp;Date().getTime());&nbsp;\r\n&nbsp;&nbsp;imageMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_IMAGE);&nbsp;\r\n&nbsp;&nbsp;\/\/respContent=requestMap.get(\"PicUrl\");&nbsp;\r\n&nbsp;&nbsp;imageMessage.setPicUrl(\"http:\/\/img24.pplive.cn\/\/2013\/\/07\/\/24\/\/12103112092_230X306.jpg\");&nbsp;\r\n&nbsp;&nbsp;respMessage&nbsp;=&nbsp;MessageUtil.imageMessageToXml(imageMessage);&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;\/\/\u5730\u7406\u4f4d\u7f6e&nbsp;\r\n&nbsp;&nbsp;else&nbsp;if(msgType.equals(MessageUtil.MESSSAGE_TYPE_LOCATION)){&nbsp;\r\n&nbsp;&nbsp;LocationMessage&nbsp;locationMessage=new&nbsp;LocationMessage();&nbsp;\r\n&nbsp;&nbsp;locationMessage.setToUserName(fromUserName);&nbsp;\r\n&nbsp;&nbsp;locationMessage.setFromUserName(toUserName);&nbsp;\r\n&nbsp;&nbsp;locationMessage.setCreateTime(new&nbsp;Date().getTime());&nbsp;\r\n&nbsp;&nbsp;locationMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_LOCATION);&nbsp;\r\n&nbsp;&nbsp;locationMessage.setLocation_X(requestMap.get(\"Location_X\"));&nbsp;\r\n&nbsp;&nbsp;locationMessage.setLocation_Y(requestMap.get(\"Location_Y\"));&nbsp;\r\n&nbsp;&nbsp;locationMessage.setScale(requestMap.get(\"Scale\"));&nbsp;\r\n&nbsp;&nbsp;locationMessage.setLabel(requestMap.get(\"Label\"));&nbsp;\r\n&nbsp;&nbsp;respMessage&nbsp;=&nbsp;MessageUtil.locationMessageToXml(locationMessage);&nbsp;\r\n&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;&nbsp;\/\/\u89c6\u9891\u6d88\u606f&nbsp;\r\n&nbsp;&nbsp;else&nbsp;if(msgType.equals(MessageUtil.MESSSAGE_TYPE_VIDEO)){&nbsp;\r\n&nbsp;&nbsp;VideoMessage&nbsp;videoMessage=new&nbsp;VideoMessage();&nbsp;\r\n&nbsp;&nbsp;videoMessage.setToUserName(fromUserName);&nbsp;\r\n&nbsp;&nbsp;videoMessage.setFromUserName(toUserName);&nbsp;\r\n&nbsp;&nbsp;videoMessage.setCreateTime(new&nbsp;Date().getTime());&nbsp;\r\n&nbsp;&nbsp;videoMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_VIDEO);&nbsp;\r\n&nbsp;&nbsp;videoMessage.setMediaId(requestMap.get(\"MediaId\"));&nbsp;\r\n&nbsp;&nbsp;videoMessage.setThumbMediaId(requestMap.get(\"ThumbMediaId\"));&nbsp;\r\n&nbsp;&nbsp;respMessage&nbsp;=&nbsp;MessageUtil.videoMessageToXml(videoMessage);&nbsp;\r\n&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;\/\/\u94fe\u63a5\u6d88\u606f&nbsp;\r\n&nbsp;&nbsp;else&nbsp;if(msgType.equals(MessageUtil.MESSSAGE_TYPE_LINK)){&nbsp;\r\n&nbsp;&nbsp;LinkMessage&nbsp;linkMessage=new&nbsp;LinkMessage();&nbsp;\r\n&nbsp;&nbsp;linkMessage.setToUserName(fromUserName);&nbsp;\r\n&nbsp;&nbsp;linkMessage.setFromUserName(toUserName);&nbsp;\r\n&nbsp;&nbsp;linkMessage.setCreateTime(new&nbsp;Date().getTime());&nbsp;\r\n&nbsp;&nbsp;linkMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_LINK);&nbsp;\r\n&nbsp;&nbsp;linkMessage.setTitle(requestMap.get(\"Title\"));&nbsp;\r\n&nbsp;&nbsp;linkMessage.setDescription(requestMap.get(\"Description\"));&nbsp;\r\n&nbsp;&nbsp;linkMessage.setUrl(requestMap.get(\"Url\"));&nbsp;\r\n&nbsp;&nbsp;respMessage&nbsp;=&nbsp;MessageUtil.linkMessageToXml(linkMessage);&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;\/\/\u8bed\u97f3\u6d88\u606f&nbsp;\r\n&nbsp;&nbsp;else&nbsp;if(msgType.equals(MessageUtil.MESSSAGE_TYPE_VOICE)){&nbsp;\r\n&nbsp;&nbsp;VoiceMessage&nbsp;voiceMessage=new&nbsp;VoiceMessage();&nbsp;\r\n&nbsp;&nbsp;voiceMessage.setToUserName(fromUserName);&nbsp;\r\n&nbsp;&nbsp;voiceMessage.setFromUserName(toUserName);&nbsp;\r\n&nbsp;&nbsp;voiceMessage.setCreateTime(new&nbsp;Date().getTime());&nbsp;\r\n&nbsp;&nbsp;voiceMessage.setMsgType(MessageUtil.MESSSAGE_TYPE_VOICE);&nbsp;\r\n&nbsp;&nbsp;voiceMessage.setMediaId(requestMap.get(\"MediaId\"));&nbsp;\r\n&nbsp;&nbsp;voiceMessage.setFormat(requestMap.get(\"Format\"));&nbsp;\r\n&nbsp;&nbsp;respMessage&nbsp;=&nbsp;MessageUtil.voiceMessageToXml(voiceMessage);&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;\/\/\u4e8b\u4ef6\u63a8\u9001&nbsp;\r\n&nbsp;&nbsp;else&nbsp;if(msgType.equals(MessageUtil.MESSSAGE_TYPE_EVENT)){&nbsp;\r\n&nbsp;&nbsp;\/\/\u4e8b\u4ef6\u7c7b\u578b&nbsp;\r\n&nbsp;&nbsp;String&nbsp;eventType&nbsp;=&nbsp;requestMap.get(\"Event\");&nbsp;\r\n&nbsp;&nbsp;\/\/\u8ba2\u9605&nbsp;\r\n&nbsp;&nbsp;if(eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)){&nbsp;\r\n&nbsp;&nbsp;&nbsp;respContent&nbsp;=&nbsp;\"\u8c22\u8c22\u5173\u6ce8\uff01\";&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;\/\/\u53d6\u6d88\u8ba2\u9605&nbsp;\r\n&nbsp;&nbsp;else&nbsp;if(eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)){&nbsp;\r\n&nbsp;&nbsp;&nbsp;\/\/&nbsp;\r\n&nbsp;&nbsp;&nbsp;System.out.println(\"\u53d6\u6d88\u8ba2\u9605\");&nbsp;\r\n&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;else&nbsp;if(eventType.equals(MessageUtil.EVENT_TYPE_CLICK)){&nbsp;\r\n&nbsp;&nbsp;&nbsp;\/\/\u81ea\u5b9a\u4e49\u83dc\u5355\u6d88\u606f\u5904\u7406&nbsp;\r\n&nbsp;&nbsp;&nbsp;System.out.println(\"\u81ea\u5b9a\u4e49\u83dc\u5355\u6d88\u606f\u5904\u7406\");&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;}&nbsp;catch&nbsp;(Exception&nbsp;e)&nbsp;{&nbsp;\r\n&nbsp;&nbsp;\/\/&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block&nbsp;\r\n&nbsp;&nbsp;e.printStackTrace();&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;return&nbsp;respMessage;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;String&nbsp;getMainMenu()&nbsp;\r\n&nbsp;{&nbsp;\r\n&nbsp;StringBuffer&nbsp;buffer&nbsp;=new&nbsp;StringBuffer();&nbsp;\r\n&nbsp;buffer.append(\"\u60a8\u597d\uff0c\u6211\u662fjon,\u8bf7\u56de\u590d\u6570\u5b57\u9009\u62e9\u670d\u52a1:\").append(\"\n\");&nbsp;\r\n&nbsp;buffer.append(\"1\u3001\u6211\u7684\u535a\u5ba2\").append(\"\n\");&nbsp;\r\n&nbsp;buffer.append(\"2\u3001&nbsp;\u6b4c\u66f2\u70b9\u64ad\").append(\"\n\");&nbsp;\r\n&nbsp;buffer.append(\"3\u3001&nbsp;\u7ecf\u5178\u6e38\u620f\").append(\"\n\");&nbsp;\r\n&nbsp;buffer.append(\"4&nbsp;\u3001\u804a\u5929\u6253\u724c\").append(\"\n\n\");&nbsp;\r\n&nbsp;buffer.append(\"\u56de\u590d\"+\"0\"+\"\u663e\u793a\u5e2e\u52a9\u83dc\u5355\");&nbsp;\r\n&nbsp;return&nbsp;buffer.toString();&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;}&nbsp;\r\n}&lt;\/string&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>4\uff09\u3001MessageUtil.java\u5e2e\u52a9\u7c7b\uff0c\u5305\u62ec\u7684\u5b9a\u4e49\u548cxml\u6d88\u606f\u8f6c\u6362\u548c\u5904\u7406<\/p>\n<p><\/p>\n<pre>package&nbsp;cn.jon.wechat.utils;&nbsp;\r\n&nbsp;\r\nimport&nbsp;java.io.InputStream;&nbsp;\r\nimport&nbsp;java.io.Writer;&nbsp;\r\nimport&nbsp;java.util.HashMap;&nbsp;\r\nimport&nbsp;java.util.List;&nbsp;\r\nimport&nbsp;java.util.Map;&nbsp;\r\n&nbsp;\r\nimport&nbsp;javax.servlet.http.HttpServletRequest;&nbsp;\r\n&nbsp;\r\nimport&nbsp;org.dom4j.Document;&nbsp;\r\nimport&nbsp;org.dom4j.Element;&nbsp;\r\nimport&nbsp;org.dom4j.io.SAXReader;&nbsp;\r\n&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.req.ImageMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.req.LinkMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.req.LocationMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.req.VideoMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.req.VoiceMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.resp.Article;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.resp.MusicMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.resp.NewsMessage;&nbsp;\r\nimport&nbsp;cn.jon.wechat.message.resp.TextMessage;&nbsp;\r\n&nbsp;\r\nimport&nbsp;com.thoughtworks.xstream.XStream;&nbsp;\r\nimport&nbsp;com.thoughtworks.xstream.core.util.QuickWriter;&nbsp;\r\nimport&nbsp;com.thoughtworks.xstream.io.HierarchicalStreamWriter;&nbsp;\r\nimport&nbsp;com.thoughtworks.xstream.io.xml.PrettyPrintWriter;&nbsp;\r\nimport&nbsp;com.thoughtworks.xstream.io.xml.XppDriver;&nbsp;\r\n&nbsp;\r\n\/**&nbsp;\r\n&nbsp;*&nbsp;\u5404\u79cd\u6d88\u606f\u7684\u5904\u7406\u7c7b&nbsp;\r\n&nbsp;*&nbsp;@author&nbsp;jon&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;\r\npublic&nbsp;class&nbsp;MessageUtil&nbsp;{&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u6587\u672c\u7c7b\u578b&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;MESSSAGE_TYPE_TEXT&nbsp;=&nbsp;\"text\";&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u97f3\u4e50\u7c7b\u578b&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;MESSSAGE_TYPE_MUSIC&nbsp;=&nbsp;\"music\";&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u56fe\u6587\u7c7b\u578b&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;MESSSAGE_TYPE_NEWS&nbsp;=&nbsp;\"news\";&nbsp;\r\n&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u89c6\u9891\u7c7b\u578b&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;MESSSAGE_TYPE_VIDEO&nbsp;=&nbsp;\"video\";&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u56fe\u7247\u7c7b\u578b&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;MESSSAGE_TYPE_IMAGE&nbsp;=&nbsp;\"image\";&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u94fe\u63a5\u7c7b\u578b&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;MESSSAGE_TYPE_LINK&nbsp;=&nbsp;\"link\";&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u5730\u7406\u4f4d\u7f6e\u7c7b\u578b&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;MESSSAGE_TYPE_LOCATION&nbsp;=&nbsp;\"location\";&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u97f3\u9891\u7c7b\u578b&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;MESSSAGE_TYPE_VOICE&nbsp;=&nbsp;\"voice\";&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u63a8\u9001\u7c7b\u578b&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;MESSSAGE_TYPE_EVENT&nbsp;=&nbsp;\"event\";&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u4e8b\u4ef6\u7c7b\u578b\uff1asubscribe\uff08\u8ba2\u9605\uff09&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;EVENT_TYPE_SUBSCRIBE&nbsp;=&nbsp;\"subscribe\";&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u4e8b\u4ef6\u7c7b\u578b\uff1aunsubscribe\uff08\u53d6\u6d88\u8ba2\u9605\uff09&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;EVENT_TYPE_UNSUBSCRIBE&nbsp;=&nbsp;\"unsubscribe\";&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u4e8b\u4ef6\u7c7b\u578b\uff1aclick\uff08\u81ea\u5b9a\u4e49\u83dc\u5355\u70b9\u51fb\u4e8b\u4ef6\uff09&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;EVENT_TYPE_CLICK=&nbsp;\"CLICK\";&nbsp;\r\n&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u89e3\u6790\u5fae\u4fe1\u53d1\u6765\u7684\u8bf7\u6c42&nbsp;XML&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;@SuppressWarnings(\"unchecked\")&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;Map&lt;string&gt;&nbsp;pareXml(HttpServletRequest&nbsp;request)&nbsp;throws&nbsp;Exception&nbsp;{&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;\/\/\u5c06\u89e3\u6790\u7684\u7ed3\u679c\u5b58\u50a8\u5728HashMap\u4e2d&nbsp;\r\n&nbsp;Map&lt;string&gt;&nbsp;reqMap&nbsp;=&nbsp;new&nbsp;HashMap&lt;string&gt;();&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;\/\/\u4ecerequest\u4e2d\u53d6\u5f97\u8f93\u5165\u6d41&nbsp;\r\n&nbsp;InputStream&nbsp;inputStream&nbsp;=&nbsp;request.getInputStream();&nbsp;\r\n&nbsp;\/\/\u8bfb\u53d6\u8f93\u5165\u6d41&nbsp;\r\n&nbsp;SAXReader&nbsp;reader&nbsp;=&nbsp;new&nbsp;SAXReader();&nbsp;\r\n&nbsp;Document&nbsp;document&nbsp;=&nbsp;reader.read(inputStream);&nbsp;\r\n&nbsp;\/\/\u5f97\u5230xml\u6839\u5143\u7d20&nbsp;\r\n&nbsp;Element&nbsp;root&nbsp;=&nbsp;document.getRootElement();&nbsp;\r\n&nbsp;\/\/\u5f97\u5230\u6839\u5143\u7d20\u7684\u6240\u6709\u5b50\u8282\u70b9&nbsp;\r\n&nbsp;List&lt;element&gt;&nbsp;elementList&nbsp;=&nbsp;root.elements();&nbsp;\r\n&nbsp;\/\/\u904d\u5386\u6240\u6709\u7684\u5b50\u8282\u70b9\u53d6\u5f97\u4fe1\u606f\u7c7b\u5bb9&nbsp;\r\n&nbsp;for(Element&nbsp;elem:elementList){&nbsp;\r\n&nbsp;&nbsp;reqMap.put(elem.getName(),elem.getText());&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\/\/\u91ca\u653e\u8d44\u6e90&nbsp;\r\n&nbsp;inputStream.close();&nbsp;\r\n&nbsp;inputStream&nbsp;=&nbsp;null;&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;return&nbsp;reqMap;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u54cd\u5e94\u6d88\u606f\u8f6c\u6362\u6210xml\u8fd4\u56de&nbsp;\r\n&nbsp;*&nbsp;\u6587\u672c\u5bf9\u8c61\u8f6c\u6362\u6210xml&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;String&nbsp;textMessageToXml(TextMessage&nbsp;textMessage)&nbsp;{&nbsp;\r\n&nbsp;xstream.alias(\"xml\",&nbsp;textMessage.getClass());&nbsp;\r\n&nbsp;return&nbsp;xstream.toXML(textMessage);&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u8bed\u97f3\u5bf9\u8c61\u7684\u8f6c\u6362\u6210xml&nbsp;\r\n&nbsp;*&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;String&nbsp;voiceMessageToXml(VoiceMessage&nbsp;voiceMessage)&nbsp;{&nbsp;\r\n&nbsp;xstream.alias(\"xml\",&nbsp;voiceMessage.getClass());&nbsp;\r\n&nbsp;return&nbsp;xstream.toXML(voiceMessage);&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u89c6\u9891\u5bf9\u8c61\u7684\u8f6c\u6362\u6210xml&nbsp;\r\n&nbsp;*&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;String&nbsp;videoMessageToXml(VideoMessage&nbsp;videoMessage)&nbsp;{&nbsp;\r\n&nbsp;xstream.alias(\"xml\",&nbsp;videoMessage.getClass());&nbsp;\r\n&nbsp;return&nbsp;xstream.toXML(videoMessage);&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u97f3\u4e50\u5bf9\u8c61\u7684\u8f6c\u6362\u6210xml&nbsp;\r\n&nbsp;*&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;String&nbsp;musicMessageToXml(MusicMessage&nbsp;musicMessage)&nbsp;{&nbsp;\r\n&nbsp;xstream.alias(\"xml\",&nbsp;musicMessage.getClass());&nbsp;\r\n&nbsp;return&nbsp;xstream.toXML(musicMessage);&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u56fe\u6587\u5bf9\u8c61\u8f6c\u6362\u6210xml&nbsp;\r\n&nbsp;*&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;String&nbsp;newsMessageToXml(NewsMessage&nbsp;newsMessage)&nbsp;{&nbsp;\r\n&nbsp;xstream.alias(\"xml\",&nbsp;newsMessage.getClass());&nbsp;\r\n&nbsp;xstream.alias(\"item\",&nbsp;new&nbsp;Article().getClass());&nbsp;\r\n&nbsp;return&nbsp;xstream.toXML(newsMessage);&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u56fe\u7247\u5bf9\u8c61\u8f6c\u6362\u6210xml&nbsp;\r\n&nbsp;*&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;String&nbsp;imageMessageToXml(ImageMessage&nbsp;imageMessage)&nbsp;\r\n&nbsp;{&nbsp;\r\n&nbsp;xstream.alias(\"xml\",imageMessage.getClass());&nbsp;\r\n&nbsp;return&nbsp;xstream.toXML(imageMessage);&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u94fe\u63a5\u5bf9\u8c61\u8f6c\u6362\u6210xml&nbsp;\r\n&nbsp;*&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;String&nbsp;linkMessageToXml(LinkMessage&nbsp;linkMessage)&nbsp;\r\n&nbsp;{&nbsp;\r\n&nbsp;xstream.alias(\"xml\",linkMessage.getClass());&nbsp;\r\n&nbsp;return&nbsp;xstream.toXML(linkMessage);&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u5730\u7406\u4f4d\u7f6e\u5bf9\u8c61\u8f6c\u6362\u6210xml&nbsp;\r\n&nbsp;*&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;static&nbsp;String&nbsp;locationMessageToXml(LocationMessage&nbsp;locationMessage)&nbsp;\r\n&nbsp;{&nbsp;\r\n&nbsp;xstream.alias(\"xml\",locationMessage.getClass());&nbsp;\r\n&nbsp;return&nbsp;xstream.toXML(locationMessage);&nbsp;\r\n&nbsp;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;\/**&nbsp;\r\n&nbsp;*&nbsp;\u62d3\u5c55xstream\uff0c\u4f7f\u5f97\u652f\u6301CDATA\u5757&nbsp;\r\n&nbsp;*&nbsp;\r\n&nbsp;*\/&nbsp;\r\n&nbsp;private&nbsp;static&nbsp;XStream&nbsp;xstream&nbsp;=&nbsp;new&nbsp;XStream(new&nbsp;XppDriver(){&nbsp;\r\n&nbsp;public&nbsp;HierarchicalStreamWriter&nbsp;createWriter(Writer&nbsp;out){&nbsp;\r\n&nbsp;&nbsp;return&nbsp;new&nbsp;PrettyPrintWriter(out){&nbsp;\r\n&nbsp;&nbsp;\/\/\u5bf9\u6240\u6709\u7684xml\u8282\u70b9\u7684\u8f6c\u6362\u90fd\u589e\u52a0CDATA\u6807\u8bb0&nbsp;\r\n&nbsp;&nbsp;boolean&nbsp;cdata&nbsp;=&nbsp;true;&nbsp;\r\n&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;@SuppressWarnings(\"unchecked\")&nbsp;\r\n&nbsp;&nbsp;public&nbsp;void&nbsp;startNode(String&nbsp;name,Class&nbsp;clazz){&nbsp;\r\n&nbsp;&nbsp;&nbsp;super.startNode(name,clazz);&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;protected&nbsp;void&nbsp;writeText(QuickWriter&nbsp;writer,String&nbsp;text){&nbsp;\r\n&nbsp;&nbsp;&nbsp;if(cdata){&nbsp;\r\n&nbsp;&nbsp;&nbsp;writer.write(\"\");&nbsp;\r\n&nbsp;&nbsp;&nbsp;}else{&nbsp;\r\n&nbsp;&nbsp;&nbsp;writer.write(text);&nbsp;\r\n&nbsp;&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;}&nbsp;\r\n&nbsp;&nbsp;};&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;});&nbsp;\r\n&nbsp;\r\n}&lt;\/element&gt;&lt;\/string&gt;&lt;\/string&gt;&lt;\/string&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>5\uff09\u3001BaseMessage.java\u6d88\u606f\u57fa\u7c7b(\u5305\u62ec\uff1a\u5f00\u53d1\u8005\u5fae\u4fe1\u53f7\u3001\u7528\u6237\u8d26\u6237\u3001\u521b\u5efa\u65f6\u95f4\u3001\u6d88\u606f\u7c7b\u578b\u3001\u6d88\u606fID)\uff0c\u6587\u672c\u3001\u89c6\u9891\u3001\u56fe\u7247\u6d88\u606f\u90fd\u4f1a\u6b64\u57fa\u7c7b\uff0c\u5728\u6b64\u57fa\u7840\u4e0a\u6269\u5c55\u81ea\u5df1\u7684\u53d8\u91cf\uff0c\u53ef\u6839\u636e\u5f00\u53d1\u8005\u6587\u6863\u4e2d\u7684\u5404\u79cd\u6d88\u606f\u5c5e\u6027\u8fdb\u884c\u5b9a\u4e49<\/p>\n<p><\/p>\n<pre>package&nbsp;cn.jon.wechat.message.req;&nbsp;\r\n\/**&nbsp;\r\n&nbsp;*&nbsp;\u6d88\u606f\u57fa\u7c7b&nbsp;\uff08\u666e\u901a\u7528\u6237-\u516c\u4f17\u53f7\uff09&nbsp;\r\n&nbsp;*&nbsp;@author&nbsp;jon&nbsp;\r\n&nbsp;*\/&nbsp;\r\npublic&nbsp;class&nbsp;BaseMessage&nbsp;{&nbsp;\r\n&nbsp;\r\n&nbsp;\/\/\u5f00\u53d1\u8005\u5fae\u4fe1\u53f7&nbsp;\r\n&nbsp;private&nbsp;String&nbsp;ToUserName;&nbsp;\r\n&nbsp;\/\/\u53d1\u9001\u65b9\u8d26\u53f7\uff08\u4e00\u4e2aopenId\uff09&nbsp;\r\n&nbsp;private&nbsp;String&nbsp;FromUserName;&nbsp;\r\n&nbsp;\/\/\u6d88\u606f\u521b\u5efa\u65f6\u95f4\uff08\u6574\u578b\uff09&nbsp;\r\n&nbsp;private&nbsp;long&nbsp;CreateTime;&nbsp;\r\n&nbsp;\/\/\u6d88\u606f\u7c7b\u578b\uff08text\/image\/location\/link...\uff09&nbsp;\r\n&nbsp;private&nbsp;String&nbsp;MsgType;&nbsp;\r\n&nbsp;\/\/\u6d88\u606fid&nbsp;64\u4f4d\u6574\u578b&nbsp;\r\n&nbsp;private&nbsp;String&nbsp;MsgId;&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;BaseMessage()&nbsp;{&nbsp;\r\n&nbsp;super();&nbsp;\r\n&nbsp;\/\/&nbsp;TODO&nbsp;Auto-generated&nbsp;constructor&nbsp;stub&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;BaseMessage(String&nbsp;toUserName,&nbsp;String&nbsp;fromUserName,&nbsp;long&nbsp;createTime,&nbsp;\r\n&nbsp;&nbsp;String&nbsp;msgType,&nbsp;String&nbsp;msgId)&nbsp;{&nbsp;\r\n&nbsp;super();&nbsp;\r\n&nbsp;ToUserName&nbsp;=&nbsp;toUserName;&nbsp;\r\n&nbsp;FromUserName&nbsp;=&nbsp;fromUserName;&nbsp;\r\n&nbsp;CreateTime&nbsp;=&nbsp;createTime;&nbsp;\r\n&nbsp;MsgType&nbsp;=&nbsp;msgType;&nbsp;\r\n&nbsp;MsgId&nbsp;=&nbsp;msgId;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;String&nbsp;getToUserName()&nbsp;{&nbsp;\r\n&nbsp;return&nbsp;ToUserName;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;setToUserName(String&nbsp;toUserName)&nbsp;{&nbsp;\r\n&nbsp;ToUserName&nbsp;=&nbsp;toUserName;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;String&nbsp;getFromUserName()&nbsp;{&nbsp;\r\n&nbsp;return&nbsp;FromUserName;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;setFromUserName(String&nbsp;fromUserName)&nbsp;{&nbsp;\r\n&nbsp;FromUserName&nbsp;=&nbsp;fromUserName;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;public&nbsp;long&nbsp;getCreateTime()&nbsp;{&nbsp;\r\n&nbsp;return&nbsp;CreateTime;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;setCreateTime(long&nbsp;createTime)&nbsp;{&nbsp;\r\n&nbsp;CreateTime&nbsp;=&nbsp;createTime;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;public&nbsp;String&nbsp;getMsgType()&nbsp;{&nbsp;\r\n&nbsp;return&nbsp;MsgType;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;setMsgType(String&nbsp;msgType)&nbsp;{&nbsp;\r\n&nbsp;MsgType&nbsp;=&nbsp;msgType;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;public&nbsp;String&nbsp;getMsgId()&nbsp;{&nbsp;\r\n&nbsp;return&nbsp;MsgId;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;setMsgId(String&nbsp;msgId)&nbsp;{&nbsp;\r\n&nbsp;MsgId&nbsp;=&nbsp;msgId;&nbsp;\r\n&nbsp;}&nbsp;\r\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>6\uff09\u3001TextMessage.java\u6587\u672c\u6d88\u606f\uff0c\u7ee7\u627f\u81ea5\u4e2d\u57fa\u7c7b\uff0c\u6269\u5c55\u5185\u5bb9\u5c5e\u6027<\/p>\n<p><\/p>\n<pre>package&nbsp;cn.jon.wechat.message.req;&nbsp;\r\n\/**&nbsp;\r\n&nbsp;*&nbsp;\u6587\u672c\u6d88\u606f&nbsp;\r\n&nbsp;*&nbsp;@author&nbsp;jon&nbsp;\r\n&nbsp;*\/&nbsp;\r\npublic&nbsp;class&nbsp;TextMessage&nbsp;extends&nbsp;BaseMessage{&nbsp;\r\n&nbsp;\/\/\u6d88\u606f\u5185\u5bb9&nbsp;\r\n&nbsp;private&nbsp;String&nbsp;content;&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;String&nbsp;getContent()&nbsp;{&nbsp;\r\n&nbsp;return&nbsp;content;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;setContent(String&nbsp;content)&nbsp;{&nbsp;\r\n&nbsp;this.content&nbsp;=&nbsp;content;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>7\uff09\u3001ImageMessage.java\u56fe\u7247\u6d88\u606f&nbsp;<\/p>\n<p><\/p>\n<pre>package&nbsp;cn.jon.wechat.message.req;&nbsp;\r\n\/**&nbsp;\r\n&nbsp;*&nbsp;\u56fe\u7247\u6d88\u606f&nbsp;\r\n&nbsp;*&nbsp;@author&nbsp;jon&nbsp;\r\n&nbsp;*\/&nbsp;\r\npublic&nbsp;class&nbsp;ImageMessage&nbsp;extends&nbsp;BaseMessage{&nbsp;\r\n&nbsp;\/\/\u56fe\u7247\u94fe\u63a5&nbsp;\r\n&nbsp;private&nbsp;String&nbsp;PicUrl;&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;String&nbsp;getPicUrl()&nbsp;{&nbsp;\r\n&nbsp;return&nbsp;PicUrl;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;setPicUrl(String&nbsp;picUrl)&nbsp;{&nbsp;\r\n&nbsp;PicUrl&nbsp;=&nbsp;picUrl;&nbsp;\r\n&nbsp;}&nbsp;\r\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>8\uff09\u3001VideoMessage.java\u89c6\u9891\u6d88\u606f<\/p>\n<p><\/p>\n<pre>package&nbsp;cn.jon.wechat.message.req;&nbsp;\r\n&nbsp;\r\npublic&nbsp;class&nbsp;VideoMessage&nbsp;extends&nbsp;BaseMessage&nbsp;{&nbsp;\r\n&nbsp;\r\n&nbsp;private&nbsp;String&nbsp;mediaId;&nbsp;\r\n&nbsp;private&nbsp;String&nbsp;thumbMediaId;&nbsp;\r\n&nbsp;public&nbsp;String&nbsp;getMediaId()&nbsp;{&nbsp;\r\n&nbsp;return&nbsp;mediaId;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;setMediaId(String&nbsp;mediaId)&nbsp;{&nbsp;\r\n&nbsp;this.mediaId&nbsp;=&nbsp;mediaId;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;public&nbsp;String&nbsp;getThumbMediaId()&nbsp;{&nbsp;\r\n&nbsp;return&nbsp;thumbMediaId;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;public&nbsp;void&nbsp;setThumbMediaId(String&nbsp;thumbMediaId)&nbsp;{&nbsp;\r\n&nbsp;this.thumbMediaId&nbsp;=&nbsp;thumbMediaId;&nbsp;\r\n&nbsp;}&nbsp;\r\n&nbsp;\r\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u5229\u7528java\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u6848\u4f8b\u4ee3\u7801\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u5229\u7528java\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u6848\u4f8b\u4ee3\u7801\uff0c\u5982\u4f55\u63a5\u5165\u516c\u4f17\u53f7\uff0c\u8ba2\u9605\u53f7\u600e\u4e48\u6837,\u5177\u6709\u4e00\u5b9a\u7684\u53c2\u8003\u4ef7\u503c\uff0c\u611f\u5174\u8da3\u7684\u5c0f\u4f19\u4f34\u4eec\u53ef\u4ee5\u53c2\u8003\u4e00\u4e0b \u5fae\u4fe1\u516c\u4f17\u53f7\u5f00\u53d1\u4e00\u822c\u662f\u9488\u5bf9\u4f01\u4e1a\u548c\u7ec4\u7ec7\u7684\uff0c\u4e2a\u4eba\u4e00\u822c\u53ea\u80fd\u7533\u8bf7\u8ba2\u9605\u53f7\uff0c\u5e76\u4e14\u8c03\u7528\u7684\u6709\u9650\uff0c\u4e0b\u9762\u6211\u4eec\u5c31\u6765\u7b80\u5355\u7684\u63cf\u8ff0\u4e0b\u63a5\u5165\u516c\u4f17\u53f7\u7684\u6b65\u9aa4\uff1a 1\u3001\u9996\u5148\u4f60\u9700\u8981\u4e00\u4e2a\u90ae\u7bb1\u5728\u5fae\u4fe1\u516c\u4f17\u53f7\u5e73\u53f0\u8fdb\u884c\u6ce8\u518c\uff1b&nbsp;&nbsp;&nbsp;&nbsp; \u6ce8\u518c\u7684\u65b9\u5f0f\u6709\u8ba2\u9605\u53f7\u3001\u516c\u4f17\u53f7\u3001\u5c0f\u7a0b\u5e8f\u548c\u4f01\u4e1a\u53f7\uff0c\u4e2a\u4eba\u6211\u4eec\u8fd9\u91cc\u53ea\u80fd\u9009\u62e9\u8ba2\u9605\u53f7 2\u3001\u6ce8\u518c\u5b8c\u540e\uff0c\u6211\u4eec\u767b\u5f55\u5230\u516c\u4f17\u53f7\u5e73\u53f0&#8212;&gt;\u5f00\u53d1&#8212;&gt;\u57fa\u672c\u914d\u7f6e,\u8fd9\u91cc\u9700\u8981\u586b\u5199URL\u548ctoken\uff0cURL\u5c31\u662f\u6211\u4eec\u4f7f\u7528\u670d\u52a1\u5668\u7684\u63a5\u53e3\uff1b 3\u3001Java Web\u670d\u52a1\u5668\u7a0b\u5e8f\u7f16\u8bd1\u597d\u4e14\u5728\u670d\u52a1\u5668\u4e0a\u90e8\u7f72\u53ef\u4ee5\u8fd0\u884c\u7684\u8bdd\uff0c\u53ef\u5728\u5fae\u4fe1\u516c\u4f17\u53f7\u8fdb\u884c\u5728\u7ebf\u63a5\u53e3\uff1a \u7acb\u5373\u5b66\u4e60\u201c\u201d\uff1b &nbsp;&nbsp;&nbsp; 1\uff09\u3001\u9009\u62e9\u5408\u9002\u7684\u63a5\u53e3&nbsp;&nbsp;&nbsp; 2\uff09\u3001\u7cfb\u7edf\u4f1a\u751f\u6210\u8be5\u63a5\u53e3\u7684\u53c2\u6570\u8868\uff0c\u60a8\u53ef\u4ee5\u76f4\u63a5\u5728\u6587\u672c\u6846\u5185\u586b\u5165\u5bf9\u5e94\u7684\u53c2\u6570\u503c\uff08\u7ea2\u8272\u661f\u53f7\u8868\u793a\u8be5\u5b57\u6bb5\u5fc5\u586b\uff09&nbsp;&nbsp;&nbsp; 3\uff09\u3001\u70b9\u51fb\u68c0\u67e5\u95ee\u9898\uff0c\u5373\u53ef\u5f97\u5230\u76f8\u5e94\u7684\u8c03\u8bd5\u4fe1\u606f &nbsp;&nbsp; eg:\u83b7\u53d6access_token\u7684\u6b65\u9aa4\uff1a &nbsp;&nbsp; 1\uff09\u3001\u63a5\u53e3\u7c7b\u578b\uff1a\u57fa\u7840\u652f\u6301&nbsp;&nbsp; 2\uff09\u3001\u63a5\u53e3\u5217\u8868\uff1a\u83b7\u53d6access_token\u63a5\u53e3\/token&nbsp;&nbsp; 3\uff09\u3001\u586b\u5199\u76f8\u5e94\u7684\u53c2\u6570\uff1agrant_type\u3001appid\u3001secret&nbsp;&nbsp; 4\uff09\u3001\u70b9\u51fb\u68c0\u67e5\u95ee\u9898&nbsp;&nbsp; 5\uff09\u3001\u9a8c\u8bc1\u6210\u529f\u4f1a\u8fd4\u56de\u7ed3\u679c\u548c\u63d0\u793a\uff0c\u7ed3\u679c\u4e3a\uff1a200 ok,\u63d0\u793a\uff1aRequest successful\u5373\u8868\u793a\u9a8c\u8bc1\u6210\u529f &nbsp;&nbsp; \u6211\u4eec\u8fd9\u91cc\u9a8c\u8bc1\u6bd4\u8f83\u591a\u7684\u662f\u6d88\u606f\u63a5\u53e3\u8c03\u8bd5\uff1a\u6587\u672c\u6d88\u606f\u3001\u6d88\u606f\u3001\u8bed\u97f3\u6d88\u606f\u3001\u6d88\u606f\u3001etc 4\u3001\u63a5\u53e3\u6709\u4e0d\u7406\u89e3\u7684\u5730\u65b9\uff0c\u53ef\u8fdb\u5165\u5f00\u53d1&#8211;&gt;\u5f00\u53d1\u8005\u5de5\u5177&#8211;&gt;\u5f00\u53d1\u8005\u6587\u6863\u8fdb\u884c 5\u3001\u63a5\u53e3\u6743\u9650\uff1a\u8ba2\u9605\u53f7\u4e3b\u8981\u6709\u57fa\u7840\u652f\u6301\u3001\u63a5\u6536\u6d88\u606f\u53ca\u7f51\u9875\u670d\u52a1\u91cc\u9762\u7684\u4e00\u4e9b\u63a5\u53e3 \u4e0b\u9762\u6211\u4eec\u4e3b\u8981\u8bb2\u8ba2\u9605\u53f7\u600e\u4e48\u6837\u63a5\u6536\u6d88\u606f\u7684\u6848\u4f8b\uff1a 1\u3001\u9700\u8981\u7533\u8bf7\u4e00\u4e2a\u4e2a\u4eba\u5fae\u4fe1\u8ba2\u9605\u53f72\u3001url\u670d\u52a1\u5668\u548c\u670d\u52a1\u5668\u7aef\u4ee3\u7801\u90e8\u7f72\uff08\u53ef\u4ee5\u7528\u817e\u8baf\u4e91or\u963f\u91cc\u4e91\u670d\u52a1\u5668\uff09 1\uff09\u3001Acs.java\u7c7b\uff0c\u9a8c\u8bc1\u6765\u81ea\u5fae\u4fe1\u670d\u52a1\u5668\u548c\u5fae\u4fe1\u670d\u52a1\u5668\u7684\u6d88\u606f\u5904\u7406 package&nbsp;cn.jon.wechat.servlet;&nbsp; &nbsp; import&nbsp;java.io.IOException;&nbsp; import&nbsp;java.io.PrintWriter;&nbsp; &nbsp; import&nbsp;javax.servlet.ServletException;&nbsp; import&nbsp;javax.servlet.http.HttpServlet;&nbsp; import&nbsp;javax.servlet.http.HttpServletRequest;&nbsp; import&nbsp;javax.servlet.http.HttpServletResponse;&nbsp; &nbsp; import&nbsp;cn.jon.wechat.service.AccountsService;&nbsp; import&nbsp;cn.jon.wechat.utils.SignUtil;&nbsp; &nbsp; public&nbsp;class&nbsp;AccountsServlet&nbsp;extends&nbsp;HttpServlet&nbsp;{&nbsp; &nbsp; &nbsp;public&nbsp;AccountsServlet()&nbsp;{&nbsp; &nbsp;super();&nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp;public&nbsp;void&nbsp;destroy()&nbsp;{&nbsp; &nbsp;super.destroy();&nbsp; &nbsp;\/\/&nbsp;Put&nbsp;your&nbsp;code&nbsp;here&nbsp; &nbsp;}&nbsp; &nbsp;\/**&nbsp; &nbsp;*&nbsp;\u786e\u8ba4\u8bf7\u6c42\u6765\u81ea\u4e8e\u5fae\u4fe1\u670d\u52a1\u5668&nbsp; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-28954","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=28954"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28954\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=28954"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=28954"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=28954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}