{"id":29227,"date":"2024-11-25T15:55:31","date_gmt":"2024-11-25T07:55:31","guid":{"rendered":"https:\/\/fwq.ai\/blog\/29227\/"},"modified":"2024-11-25T15:55:31","modified_gmt":"2024-11-25T07:55:31","slug":"java%e5%be%ae%e4%bf%a1%e5%bc%80%e5%8f%91api%e5%be%ae%e4%bf%a1%e8%87%aa%e5%ae%9a%e4%b9%89%e4%b8%aa%e6%80%a7%e5%8c%96%e8%8f%9c%e5%8d%95%e5%ae%9e%e7%8e%b0%e5%ae%9e%e4%be%8b%e4%bb%a3%e7%a0%81","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/29227\/","title":{"rendered":"java\u5fae\u4fe1\u5f00\u53d1API\u5fae\u4fe1\u81ea\u5b9a\u4e49\u4e2a\u6027\u5316\u83dc\u5355\u5b9e\u73b0\u5b9e\u4f8b\u4ee3\u7801"},"content":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u4e3a\u5927\u5bb6\u8be6\u7ec6\u4ecb\u7ecd\u4e86java\u5fae\u4fe1\u5f00\u53d1api\u7b2c\u56db\u6b65\uff0c\u81ea\u5b9a\u4e49\u83dc\u5355\u4ee5\u53ca\u4e2a\u6027\u5316\u83dc\u5355\u5b9e\u73b0 \uff0c\u611f\u5174\u8da3\u7684\u5c0f\u4f19\u4f34\u4eec\u53ef\u4ee5\u53c2\u8003\u4e00\u4e0b<\/p>\n<p>\u5fae\u4fe1\u5982\u4f55\u5b9e\u73b0\u81ea\u5b9a\u4e49\u4e2a\u6027\u5316\u83dc\u5355\uff0c\u4e0b\u9762\u4e3a\u5927\u5bb6\u4ecb\u7ecd<\/p>\n<p><strong>\u4e00\u3001\u5168\u5c40\u8bf4\u660e<\/strong><br \/>\u8be6\u7ec6\u8bf4\u660e\u8bf7\u53c2\u8003\u524d\u4e24\u7bc7\u6587\u7ae0\u3002<\/p>\n<p><strong>\u4e8c\u3001\u672c\u6587\u8bf4\u660e<\/strong><br \/>\u672c\u6587\u5206\u4e3a\u4e94\u90e8\u5206\uff1a<br \/>&nbsp;&nbsp;&nbsp; * \u5de5\u5177\u7c7bAccessTokenUtils\u7684\u5c01\u88c5<br \/>&nbsp;&nbsp;&nbsp; * \u81ea\u5b9a\u4e49\u83dc\u5355\u548c\u4e2a\u6027\u5316\u83dc\u5355\u6587\u6863\u7684\u9605\u8bfb\u89e3\u6790<br \/>&nbsp;&nbsp;&nbsp; * \u83dc\u5355JSON\u7684\u5206\u6790\u4ee5\u53ca\u6784\u5efa\u5bf9\u5e94bean<br \/>&nbsp;&nbsp;&nbsp; * \u81ea\u5b9a\u4e49\u83dc\u5355\u7684\u5b9e\u73b0<br \/>&nbsp;&nbsp;&nbsp; * \u4e2a\u6027\u5316\u83dc\u5355\u7684\u5b9e\u73b0<br \/>\u5fae\u4fe1\u81ea\u5b9a\u4e49\u83dc\u5355\u6240\u6709\u7c7b\u578b\u83dc\u5355\u90fd\u7ed9\u51fa\u6f14\u793a<br \/>\u672c\u6587\u7ed3\u675f\u4f1a\u7ed9\u51fa\u5305\u62ec\u672c\u6587\u524d\u56db\u7bc7\u6587\u7ae0\u7684\u6240\u6709\u6f14\u793a\u6e90\u7801<\/p>\n<p><span style=\"color: #800000\"><strong>\u5de5\u5177\u7c7bAccessTokenUtils\u7684\u5c01\u88c5<br \/><\/strong><\/span>\u5728\u4e0a\u6587\u4e2d\u5173\u4e8eAccessToken\u7684\u83b7\u53d6\u548c\u5b9a\u65f6\u4fdd\u5b58\u5df2\u7ecf\u8be6\u7ec6\u4ecb\u7ecd\u8fc7\uff0c\u6b64\u5904\u76f4\u63a5\u7ed9\u51fa\u5904\u7406\u8fc7\u4e4b\u540e\u5c01\u88c5\u7684AccessTokenUtils\uff0c\u5b9e\u73b0\u539f\u7406\u4ee5\u53ca\u6587\u6863\u9605\u8bfb\u4e0d\u518d\u7ed9\u51fa\u3002<br \/>AccessTokenUtils.java<\/p>\n<p><span>\u7acb\u5373\u5b66\u4e60<\/span>\u201c\u201d\uff1b<\/p>\n<p><\/p>\n<pre>package&nbsp;com.gist.utils;\r\n\r\nimport&nbsp;java.io.File;\r\nimport&nbsp;java.io.FileInputStream;\r\nimport&nbsp;java.io.FileOutputStream;\r\nimport&nbsp;java.io.IOException;\r\nimport&nbsp;java.io.InputStreamReader;\r\nimport&nbsp;java.net.URL;\r\n\r\nimport&nbsp;javax.net.ssl.HttpsURLConnection;\r\n\r\nimport&nbsp;com.gist.bean.Access_token;\r\nimport&nbsp;com.google.gson.Gson;\r\n\r\n\/**\r\n&nbsp;*&nbsp;@author&nbsp;\u9ad8\u8fdc&nbsp;\u90ae\u7bb1\uff1awgyscsf@163.com&nbsp;\u535a\u5ba2&nbsp;http:\/\/blog.csdn.net\/wgyscsf\r\n&nbsp;*&nbsp;&nbsp;&nbsp;\u7f16\u5199\u65f6\u671f&nbsp;2016-4-7&nbsp;\u4e0b\u53485:44:33\r\n&nbsp;*\/\r\npublic&nbsp;class&nbsp;AccessTokenUtils&nbsp;{\r\n&nbsp;private&nbsp;static&nbsp;final&nbsp;long&nbsp;MAX_TIME&nbsp;=&nbsp;7200&nbsp;*&nbsp;1000;\/\/&nbsp;\u5fae\u4fe1\u5141\u8bb8\u6700\u957fAccess_token\u6709\u6548\u65f6\u95f4\uff08ms\uff09\r\n&nbsp;private&nbsp;static&nbsp;final&nbsp;String&nbsp;TAG&nbsp;=&nbsp;\"WeixinApiTest\";\/\/&nbsp;TAG\r\n&nbsp;private&nbsp;static&nbsp;final&nbsp;String&nbsp;APPID&nbsp;=&nbsp;\"wx889b020b3666b0b8\";\/\/&nbsp;APPID\r\n&nbsp;private&nbsp;static&nbsp;final&nbsp;String&nbsp;SECERT&nbsp;=&nbsp;\"6da7676bf394f0a9f15fbf06027856bb\";\/\/&nbsp;\u79d8\u94a5\r\n\r\n&nbsp;\/*\r\n&nbsp;&nbsp;*&nbsp;\u8be5\u65b9\u6cd5\u5b9e\u73b0\u83b7\u53d6Access_token\u3001\u4fdd\u5b58\u5e76\u4e14\u53ea\u4fdd\u5b582\u5c0f\u65f6Access_token\u3002\u5982\u679c\u8d85\u8fc7\u4e24\u4e2a\u5c0f\u65f6\u91cd\u65b0\u83b7\u53d6\uff1b\u5982\u679c\u6ca1\u6709\u8d85\u8fc7\u4e24\u4e2a\u5c0f\u65f6\uff0c\u76f4\u63a5\u83b7\u53d6\u3002\u8be5\u65b9\u6cd5\u4f9d\u8d56\r\n&nbsp;&nbsp;*&nbsp;\uff1apublic&nbsp;static&nbsp;String&nbsp;getAccessToken()\uff1b\r\n&nbsp;&nbsp;*&nbsp;\r\n&nbsp;&nbsp;*&nbsp;\u601d\u8def:\u5c06\u83b7\u53d6\u5230\u7684Access_token\u548c\u5f53\u524d\u65f6\u95f4\u5b58\u50a8\u5230file\u91cc\uff0c\r\n&nbsp;&nbsp;*&nbsp;\u53d6\u51fa\u65f6\u5224\u65ad\u5f53\u524d\u65f6\u95f4\u548c\u5b58\u50a8\u91cc\u9762\u7684\u8bb0\u5f55\u7684\u65f6\u95f4\u7684\u65f6\u95f4\u5dee\uff0c\u5982\u679c\u5927\u4e8eMAX_TIME,\u91cd\u65b0\u83b7\u53d6\uff0c\u5e76\u4e14\u5c06\u83b7\u53d6\u5230\u7684\u5b58\u50a8\u5230file\u66ff\u6362\u539f\u6765\u7684\u5185\u5bb9\r\n&nbsp;&nbsp;*&nbsp;\uff0c\u5982\u679c\u5c0f\u4e8eMAX_TIME\uff0c\u76f4\u63a5\u83b7\u53d6\u3002\r\n&nbsp;&nbsp;*\/\r\n&nbsp;\/\/&nbsp;\u4e3a\u4e86\u8c03\u7528\u4e0d\u629b\u5f02\u5e38\uff0c\u8fd9\u91cc\u5168\u90e8\u6355\u6349\u5f02\u5e38\uff0c\u4ee3\u7801\u6709\u70b9\u957f\r\n&nbsp;public&nbsp;static&nbsp;String&nbsp;getSavedAccess_token()&nbsp;{\r\n&nbsp;&nbsp;Gson&nbsp;gson&nbsp;=&nbsp;new&nbsp;Gson();\/\/&nbsp;\u7b2c\u4e09\u65b9jar,\u5904\u7406json\u548cbean\u7684\u8f6c\u6362\r\n&nbsp;&nbsp;String&nbsp;mAccess_token&nbsp;=&nbsp;null;\/\/&nbsp;\u9700\u8981\u83b7\u53d6\u7684Access_token\uff1b\r\n&nbsp;&nbsp;FileOutputStream&nbsp;fos&nbsp;=&nbsp;null;\/\/&nbsp;\u8f93\u51fa\u6d41\r\n&nbsp;&nbsp;FileInputStream&nbsp;fis&nbsp;=&nbsp;null;\/\/&nbsp;\u8f93\u5165\u6d41\r\n&nbsp;&nbsp;File&nbsp;file&nbsp;=&nbsp;new&nbsp;File(\"temp_access_token.temp\");\/\/&nbsp;Access_token\u4fdd\u5b58\u7684\u4f4d\u7f6e\r\n&nbsp;&nbsp;try&nbsp;{\r\n&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u5982\u679c\u6587\u4ef6\u4e0d\u5b58\u5728\uff0c\u521b\u5efa\r\n&nbsp;&nbsp;&nbsp;if&nbsp;(!file.exists())&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;file.createNewFile();\r\n&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;}&nbsp;catch&nbsp;(Exception&nbsp;e1)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;e1.printStackTrace();\r\n&nbsp;&nbsp;}\r\n&nbsp;&nbsp;\/\/&nbsp;\u5982\u679c\u6587\u4ef6\u5927\u5c0f\u7b49\u4e8e0\uff0c\u8bf4\u660e\u7b2c\u4e00\u6b21\u4f7f\u7528\uff0c\u5b58\u5165Access_token\r\n&nbsp;&nbsp;if&nbsp;(file.length()&nbsp;==&nbsp;0)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;try&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;mAccess_token&nbsp;=&nbsp;getAccessToken();\/\/&nbsp;\u83b7\u53d6AccessToken\r\n&nbsp;&nbsp;&nbsp;&nbsp;Access_token&nbsp;at&nbsp;=&nbsp;new&nbsp;Access_token();\r\n&nbsp;&nbsp;&nbsp;&nbsp;at.setAccess_token(mAccess_token);\r\n&nbsp;&nbsp;&nbsp;&nbsp;at.setExpires_in(System.currentTimeMillis()&nbsp;+&nbsp;\"\");\/\/&nbsp;\u8bbe\u7f6e\u5b58\u5165\u65f6\u95f4\r\n&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;json&nbsp;=&nbsp;gson.toJson(at);\r\n&nbsp;&nbsp;&nbsp;&nbsp;fos&nbsp;=&nbsp;new&nbsp;FileOutputStream(file,&nbsp;false);\/\/&nbsp;\u4e0d\u5141\u8bb8\u8ffd\u52a0\r\n&nbsp;&nbsp;&nbsp;&nbsp;fos.write((json).getBytes());\/\/&nbsp;\u5c06AccessToken\u548c\u5f53\u524d\u65f6\u95f4\u5b58\u5165\u6587\u4ef6\r\n&nbsp;&nbsp;&nbsp;&nbsp;fos.close();\r\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;mAccess_token;\r\n&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(Exception&nbsp;e)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();\r\n&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;}&nbsp;else&nbsp;{\r\n&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9\r\n&nbsp;&nbsp;&nbsp;byte[]&nbsp;b&nbsp;=&nbsp;new&nbsp;byte[2048];\r\n&nbsp;&nbsp;&nbsp;int&nbsp;len&nbsp;=&nbsp;0;\r\n&nbsp;&nbsp;&nbsp;try&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;fis&nbsp;=&nbsp;new&nbsp;FileInputStream(file);\r\n&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;=&nbsp;fis.read(b);\r\n&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(IOException&nbsp;e1)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block\r\n&nbsp;&nbsp;&nbsp;&nbsp;e1.printStackTrace();\r\n&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;String&nbsp;mJsonAccess_token&nbsp;=&nbsp;new&nbsp;String(b,&nbsp;0,&nbsp;len);\/\/&nbsp;\u8bfb\u53d6\u5230\u7684\u6587\u4ef6\u5185\u5bb9\r\n&nbsp;&nbsp;&nbsp;Access_token&nbsp;access_token&nbsp;=&nbsp;gson.fromJson(mJsonAccess_token,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;Access_token().getClass());\r\n&nbsp;&nbsp;&nbsp;if&nbsp;(access_token.getExpires_in()&nbsp;!=&nbsp;null)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;saveTime&nbsp;=&nbsp;Long.parseLong(access_token.getExpires_in());\r\n&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;nowTime&nbsp;=&nbsp;System.currentTimeMillis();\r\n&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;remianTime&nbsp;=&nbsp;nowTime&nbsp;-&nbsp;saveTime;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;System.out.println(TAG&nbsp;+&nbsp;\"\u65f6\u95f4\u5dee\uff1a\"&nbsp;+&nbsp;remianTime&nbsp;+&nbsp;\"ms\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(remianTime&nbsp;&lt;p&gt;&lt;span style=\"color: #800000\"&gt;&lt;strong&gt;\u81ea\u5b9a\u4e49\u83dc\u5355\u548c\u4e2a\u6027\u5316\u83dc\u5355\u6587\u6863\u7684\u9605\u8bfb\u89e3\u6790&lt;br&gt;&lt;\/strong&gt;&lt;\/span&gt;\u2022\u81ea\u5b9a\u4e49\u83dc\u5355 &lt;br&gt;\u25e6\u81ea\u5b9a\u4e49\u83dc\u5355\u521b\u5efa\u63a5\u53e3&lt;br&gt;&nbsp;\u25e6\u81ea\u5b9a\u4e49\u83dc\u5355\u67e5\u8be2\u63a5\u53e3&lt;br&gt;&nbsp;\u25e6\u81ea\u5b9a\u4e49\u83dc\u5355\u5220\u9664\u63a5\u53e3&lt;br&gt;&nbsp;\u25e6\u81ea\u5b9a\u4e49\u83dc\u5355\u4e8b\u4ef6\u63a8\u9001&lt;br&gt;&nbsp;\u25e6\u4e2a\u6027\u5316\u83dc\u5355\u63a5\u53e3&lt;br&gt;&nbsp;\u25e6\u83b7\u53d6\u516c\u4f17\u53f7\u7684\u83dc\u5355\u914d\u7f6e&lt;\/p&gt;&lt;p&gt;&nbsp;\u2022\u6587\u6863\u5730\u5740\uff1a&lt;span style=\"color: #3366ff\"&gt;http:\/\/mp.weixin.qq.com\/wiki\/10\/0234e39a2025342c17a7d23595c6b40a.html&lt;br&gt;&lt;\/span&gt;&nbsp;\u2022\u5b98\u7f51\u6587\u6863\u7ed9\u51fa\u8fd9\u6837\u89e3\u91ca\uff1a&lt;br&gt;* \u81ea\u5b9a\u4e49\u83dc\u5355\u63a5\u53e3\u53ef\u5b9e\u73b0\u591a\u79cd\u7c7b\u578b\u6309\u94ae\uff0c\u5982\u4e0b\uff1a1\u3001click:\u70b9\u51fb\u4e8b\u4ef6...;2\u3001view:\u8df3\u8f6c\u4e8b\u4ef6...;3\u3001...(\u5173\u4e8e\u81ea\u5b9a\u4e49\u83dc\u5355)&lt;br&gt;* \u63a5\u53e3\u8c03\u7528\u8bf7\u6c42\u8bf4\u660e http\u8bf7\u6c42\u65b9\u5f0f\uff1aPOST\uff08\u8bf7\u4f7f\u7528https\u534f\u8bae\uff09 &lt;span style=\"color: #3366ff\"&gt;https:\/\/api.weixin.qq.com\/cgi-bin\/menu\/create?access_token=ACCESS_TOKEN&lt;\/span&gt;(\u5173\u4e8e\u81ea\u5b9a\u4e49\u83dc\u5355)&lt;br&gt;* click\u548cview\u7684\u8bf7\u6c42\u793a\u4f8b {\"button\":[...]}&nbsp; (\u5173\u4e8e\u81ea\u5b9a\u4e49\u83dc\u5355)&lt;br&gt;* \u53c2\u6570\u8bf4\u660e...(\u5173\u4e8e\u81ea\u5b9a\u4e49\u83dc\u5355)&lt;br&gt;* \u521b\u5efa\u4e2a\u6027\u5316\u83dc\u5355http\u8bf7\u6c42\u65b9\u5f0f\uff1aPOST\uff08\u8bf7\u4f7f\u7528https\u534f\u8bae\uff09&lt;span style=\"color: #3366ff\"&gt;https:\/\/api.weixin.qq.com\/cgi-bin\/menu\/addconditional?access_token=ACCESS_TOKEN(&lt;\/span&gt;\u5173\u4e8e\u4e2a\u6027\u5316\u83dc\u5355)&lt;br&gt;* \u8bf7\u6c42\u793a\u4f8b\uff1a {\"button\":[...],\"matchrule\":{...}}(\u5173\u4e8e\u4e2a\u6027\u5316\u83dc\u5355)&lt;br&gt;* \u53c2\u6570\u8bf4\u660e...(\u5173\u4e8e\u4e2a\u6027\u5316\u83dc\u5355)&lt;br&gt;* \u5f00\u53d1\u8005\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u6761\u4ef6\u6765\u8bbe\u7f6e\u7528\u6237\u770b\u5230\u7684\u83dc\u5355(\u5173\u4e8e\u4e2a\u6027\u5316\u83dc\u5355)\uff1a&lt;br&gt;&nbsp;&nbsp;&nbsp; 1\u3001\u7528\u6237\u5206\u7ec4\uff08\u5f00\u53d1\u8005\u7684\u4e1a\u52a1\u9700\u6c42\u53ef\u4ee5\u501f\u52a9\u7528\u6237\u5206\u7ec4\u6765\u5b8c\u6210\uff09&lt;br&gt;&nbsp;&nbsp;&nbsp; 2\u3001\u6027\u522b&lt;br&gt;&nbsp;&nbsp;&nbsp; 3\u3001\u624b\u673a\u64cd\u4f5c\u7cfb\u7edf&lt;br&gt;&nbsp;&nbsp;&nbsp; 4\u3001\u5730\u533a\uff08\u7528\u6237\u5728\u5fae\u4fe1\u5ba2\u6237\u7aef\u8bbe\u7f6e\u7684\u5730\u533a\uff09&lt;br&gt;&nbsp;&nbsp;&nbsp; 5\u3001\u8bed\u8a00\uff08\u7528\u6237\u5728\u5fae\u4fe1\u5ba2\u6237\u7aef\u8bbe\u7f6e\u7684\u8bed\u8a00\uff09&lt;\/p&gt;&lt;p&gt;&nbsp;\u2022\u7406\u89e3\uff1a&lt;br&gt;\u25e6\u53c8\u662f\u719f\u6089\u7684POST\u8bf7\u6c42\uff0c\u4f46\u662f\uff0c\u5173\u4e8e\u8c03\u7528\u8c8c\u4f3c\u8bf4\u7684\u542b\u7cca\u5176\u8f9e\uff0c\u4e0d\u592a\u660e\u767d\u3002\u53ea\u662f\u77e5\u9053\u6211\u4eec\u9700\u8981\u4f7f\u7528\u201c?access_token=ACCESS_TOKEN\u201d\u8fd9\u4e2a\u53c2\u6570\uff0c\u8fd9\u4e2a\u53c2\u6570\u6211\u4eec\u5728\u4e0a\u7bc7\u6587\u7ae0\u5df2\u7ecf\u83b7\u53d6\u5230\u4e86\u3002\u5047\u5982\u6211\u4eec\u5c06\u5fae\u4fe1\u6587\u6863\u7ed9\u7684\u90a3\u4e2a\u8bf7\u6c42\u5730\u5740\u4e2d\u201cACCESS_TOKEN\u201d\u6362\u6210\u6211\u4eec\u83b7\u53d6\u5230\u7684\u81ea\u5df1\u7684ACCESS_TOKEN\uff0c\u8bbf\u95ee\u8be5\u7f51\u5740\uff0c\u4f1a\u770b\u5230\u201c{\u201cerrcode\u201d:44002,\u201derrmsg\u201d:\u201dempty post data hint: [Gdveda0984vr23]\u201d}\u201d\u3002\u5927\u6982\u610f\u601d\u662f\uff0c\u7a7a\u7684post\u8bf7\u6c42\u6570\u636e\u3002\u6240\u4ee5\uff0c\u6211\u4eec\u8981\u901a\u8fc7POST\u8bf7\u6c42\u7684\u5f62\u5f0f\u4f20\u9012\u53c2\u6570\u7ed9\u5fae\u4fe1\u670d\u52a1\u5668\uff0c\u5728\u6587\u6863\u4e0b\u9762\u8fd8\u7ed9\u51fa\u4e86\u53c2\u6570\u7684\u683c\u5f0f\uff1a{\u201cbutton\u201d:[\u2026]}\uff0c\u6240\u4ee5\uff0c\u6211\u4eec\u8981\u6309\u7167\u8be5\u683c\u5f0f\u7ed9\u5fae\u4fe1\u670d\u52a1\u5668\u8fdb\u884c\u4f20\u9012\u53c2\u6570\u3002&lt;br&gt;&nbsp;\u25e6\u5173\u4e8e\u53c2\u6570\u8bf4\u660e\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u5728\u81ea\u5b9a\u4e49\u83dc\u5355\u521b\u5efa\u4e2d\u6709\u4e03\u4e2a\u53c2\u6570\u3002\u5728\u4e2a\u6027\u5316\u83dc\u5355\u63a5\u53e3\u4e2d\u9664\u53bb\u8fd9\u4e03\u4e2a\u53c2\u6570\u4e4b\u5916\uff0c\u53e6\u5916\u591a\u4e2a\u516b\u4e2a\u53c2\u6570\u3002\u7b80\u5355\u67e5\u770b\u6b64\u90e8\u5206\u6587\u6863\uff0c\u6211\u4eec\u53ef\u4ee5\u4e86\u89e3\u5230\u8fd9\u4e2a\u516b\u4e2a\u53c2\u6570\u662f\u4e3a\u4e86\u4e2a\u6027\u5316\u83dc\u5355\u505a\u5339\u914d\u7b5b\u9009\u7528\u7684\u3002&lt;br&gt;&nbsp;\u25e6\u73b0\u5728\uff0c\u6211\u4eec\u9700\u8981\u6309\u7167\u5fae\u4fe1\u6587\u6863\u7684\u8981\u6c42\u6784\u9020json\u901a\u8fc7post\u7684\u8bf7\u6c42\u5411\u5fae\u4fe1\u670d\u52a1\u5668\u53d1\u9001\u8fd9\u4e00\u4e32json\u6570\u636e\uff0cjson\u91cc\u9762\u5c31\u5305\u62ec\u6211\u4eec\u521b\u5efa\u7684\u5404\u79cd\u7c7b\u578b\u7684\u6309\u94ae\u4e8b\u4ef6\u3002&lt;\/p&gt;&lt;p&gt;&lt;span style=\"color: #800000\"&gt;&lt;strong&gt;\u83dc\u5355JSON\u7684\u5206\u6790\u4ee5\u53ca\u6784\u5efa\u5bf9\u5e94bean&lt;br&gt;&lt;\/strong&gt;&lt;\/span&gt;&nbsp;\u81ea\u5b9a\u4e49\u83dc\u5355json\u5206\u6790\uff08\u4e0d\u5305\u62ec\u4e2a\u6027\u5316\u83dc\u5355\uff09\u3002\u4e0b\u9762\u8fd9\u6bb5\u4ee3\u7801\u662f\u5fae\u4fe1\u6587\u6863\u7ed9\u7684\u793a\u4f8b\u3002&lt;br&gt;click\u548cview\u7684\u8bf7\u6c42\u793a\u4f8b&lt;\/p&gt;&lt;p class=\"jb51code\"&gt;&lt;br&gt;&lt;\/p&gt;&lt;pre class=\"brush:java;\"&gt;&nbsp;{\r\n&nbsp;&nbsp;\"button\":[\r\n&nbsp;&nbsp;{&nbsp;\r\n&nbsp;&nbsp;&nbsp;\"type\":\"click\",\r\n&nbsp;&nbsp;&nbsp;\"name\":\"\u4eca\u65e5\u6b4c\u66f2\",\r\n&nbsp;&nbsp;&nbsp;\"key\":\"V1001_TODAY_MUSIC\"\r\n&nbsp;&nbsp;},\r\n&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;\"name\":\"\u83dc\u5355\",\r\n&nbsp;&nbsp;&nbsp;\"sub_button\":[\r\n&nbsp;&nbsp;&nbsp;{&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"type\":\"view\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"name\":\"\u641c\u7d22\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"url\":\"http:\/\/www.soso.com\/\"\r\n&nbsp;&nbsp;&nbsp;},\r\n&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"type\":\"view\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"name\":\"\u89c6\u9891\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"url\":\"http:\/\/v.qq.com\/\"\r\n&nbsp;&nbsp;&nbsp;},\r\n&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"type\":\"click\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"name\":\"\u8d5e\u4e00\u4e0b\u6211\u4eec\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"key\":\"V1001_GOOD\"\r\n&nbsp;&nbsp;&nbsp;}]\r\n&nbsp;&nbsp;}]\r\n&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u7ecf\u8fc7\u5206\u6790\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u8fd9\u4e32json\u6570\u636e\u5206\u4e3a\u4e09\u5c42\uff1a\u201c\u201dbutton\u201d:[{\u2026},{\u2026}]\u201d\u3001\u201c[{\u2026},{{\u201cname\u201d:\u83dc\u5355\uff0c\u201dsub_button\u201d:[{},{}]}]\u201d\u3001\u201c{\u201ctype\u201d:\u201dview\u201d,\u201dname:\u201d:\u201d\u89c6\u9891\u201d,\u201durl\u201d:\u201d\u2026\u201d},{},{}\u201d\uff0c\u53ef\u80fd\u770b\u8d77\u6765\u6bd4\u8f83\u6655\u3002<br \/>\u4f46\u662f\uff0c\u5982\u679c\u6211\u4eec\u80fd\u591f\u8054\u60f3\u8d77\u6765\u73b0\u5b9e\u4e2d\u770b\u5230\u7684\u5fae\u4fe1\u83dc\u5355\uff0c\u5c31\u4f1a\u597d\u7406\u89e3\u4e00\u70b9\uff1a\u4e00\u7ea7:\u83dc\u5355\uff08\u4e00\u4e2a\u83dc\u5355\uff09\uff0c\u4e0b\u5305\u62ec\u4e00\u5230\u4e09\u4e2a\u7236\u6309\u94ae\uff1b\u4e8c\u7ea7\uff1a\u7236\u6309\u94ae\uff081~3\u4e2a\u7236\u6309\u94ae\uff09\uff0c\u4e0b\u5305\u62ec\u4e00\u5230\u4e94\u4e2a\u5b50\u6309\u94ae\uff1b\u4e09\u7ea7\uff1a\u5b50\u6309\u94ae\uff081~5\u4e2a\u5b50\u6309\u94ae\uff09\u3002<br \/>&nbsp;\u73b0\u5728\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230json\u548c\u6211\u4eec\u7406\u89e3\u7684\u201c\u83dc\u5355\u201d\u53ef\u4ee5\u4e00\u4e00\u5bf9\u5e94\u8d77\u6765\u4e86\u3002\u73b0\u5728\u91cd\u70b9\u662f\u5982\u4f55\u786e\u8ba4\u6bcf\u4e00\u7ea7\u7684\u201c\u7ea7\u540d\u201d\uff0c\u5728java\u4e2d\u4e5f\u5c31\u662f\u5bf9\u5e94\u7684javabean\u5bf9\u8c61\u3002<br \/>&nbsp;\u540c\u65f6\uff0c\u56e0\u4e3a\u4e00\u7ea7\u83dc\u5355\u4e0b\u4f1a\u6709\u591a\u4e2a\u7236\u6309\u94ae\uff0c\u6240\u4ee5\u662f\u4e00\u4e2aList\u7684\u5f62\u5f0f\u3002\u7236\u6309\u94ae\u4e0b\u53ef\u80fd\u6709\u591a\u4e2a\u5b50\u83dc\u5355\uff0c\u4e5f\u662f\u4e00\u4e2a List\uff1b\u4f46\u662f\uff0c\u7236\u6309\u94ae\u4e5f\u6709\u53ef\u80fd\u4e5f\u662f\u4e00\u4e2a\u5355\u72ec\u7684\u53ef\u4ee5\u54cd\u5e94\u7684\u6309\u94ae\u3002\u662f\u4e00\u4e2a\u5355\u72ec\u7684\u7236\u6309\u94ae\u5bf9\u8c61\u3002\u5b50\u6309\u94ae\u5c31\u662f\u4e00\u4e2a\u5355\u72ec\u7684\u5b50\u6309\u94ae\u5bf9\u8c61\u3002<br \/>&nbsp;\u67e5\u770b\u5173\u4e8e\u81ea\u5b9a\u4e49\u83dc\u5355\u7684\u53c2\u6570\u8bf4\u660e\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u6309\u94ae\u5206\u4e3a\u4e00\u7ea7\u6309\u94ae\uff08\u201cbutton\u201d\uff09\u548c\u4e8c\u7ea7\u6309\u94ae\uff08\u201csub_button\u201d\uff09\u3002\u8fd8\u6709\u4e00\u4e9b\u516c\u7528\u7684\u6570\u636e\u7c7b\u578b\uff0c\u4f8b\u5982\uff1a\u83dc\u5355\u54cd\u5e94\u7c7b\u578b\uff08\u201ctype\u201d\uff09\u3001\u83dc\u5355\u6807\u9898\uff08\u201cname\u201d\uff09\u3001click\u7c7b\u578b\u7684\u53c2\u6570\uff08\u201ckey\u201d\uff09\u3001view\u7c7b\u578b\u7684\u53c2\u6570\uff08\u201curl\u201d\uff09\u3001media_id\u7c7b\u578b\u548cview_limited\u7c7b\u578b\u7684\u53c2\u6570\uff08\u201cmedia_id\u201d\uff09\u3002<br \/>&nbsp;\u2022\u6570\u636e\u62bd\u8c61\uff08\u6ca1\u6709\u5199setter,getter\uff09\uff1a<\/p>\n<p><\/p>\n<pre>\/\/\u6309\u94ae\u57fa\u7c7b\r\npublic&nbsp;class&nbsp;BaseButton&nbsp;{\r\n&nbsp;private&nbsp;String&nbsp;type;\r\n&nbsp;private&nbsp;String&nbsp;name;\r\n&nbsp;private&nbsp;String&nbsp;key;\r\n&nbsp;private&nbsp;String&nbsp;url;\r\n&nbsp;private&nbsp;String&nbsp;media_id;\r\n}&nbsp;\r\n\/\/\u5b50\u6309\u94ae\r\npublic&nbsp;class&nbsp;SonButton&nbsp;extends&nbsp;BaseButton&nbsp;{\r\n&nbsp;private&nbsp;String&nbsp;sub_button;\r\n}\r\n\/\/\u7236\u6309\u94ae\r\npublic&nbsp;class&nbsp;FatherButton&nbsp;extends&nbsp;BaseButton&nbsp;{\r\nprivate&nbsp;String&nbsp;button;\/\/\u53ef\u80fd\u76f4\u63a5\u4e00\u4e2a\u7236\u6309\u94ae\u505a\u54cd\u5e94\r\n@SerializedName(\"sub_button\")\/\/\u4e3a\u4e86\u4fdd\u8bc1Gson\u89e3\u6790\u540e\u5b50\u6309\u94ae\u7684\u540d\u5b57\u662f\u201csub_button\u201d\uff0c\u5177\u4f53\u7528\u6cd5\u8bf7\u641c\u7d22\r\nprivate&nbsp;List&lt;sonbutton&gt;&nbsp;sonButtons;\/\/\u53ef\u80fd\u6709\u591a\u4e2a\u5b50\u6309\u94ae\r\n}\r\n\r\npublic&nbsp;class&nbsp;Menu&nbsp;{\r\n@SerializedName(\"button\")\r\nprivate&nbsp;List&lt;fatherbutton&gt;&nbsp;fatherButtons;\r\n}&lt;\/fatherbutton&gt;&lt;\/sonbutton&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>&nbsp;\u4ee5\u4e0a\u662f\u5b8c\u6574\u7684\u81ea\u5b9a\u4e49\u83dc\u5355\u7684\u5206\u6790\u4ee5\u53ca\u5bf9\u5e94javabean\u7684\u6784\u5efa\u3002<\/p>\n<p>&nbsp;\u5bf9\u4e8e\u4e2a\u6027\u5316\u83dc\u5355\uff0c\u5982\u679c\u67e5\u770b\u8be5\u90e8\u5206\u7684\u6587\u6863\uff0c\u4f1a\u53d1\u73b0\u548c\u81ea\u5b9a\u4e49\u83dc\u5355\u5927\u81f4\u76f8\u540c\uff0c\u53ea\u662f\u591a\u4e2a\u4e00\u4e2a\u201c\u914d\u7f6e\u201d\u7684json,\u683c\u5f0f\u662f\u8fd9\u6837\u7684\uff1a{\u201cbutton\u201d:[\u2026],\u201dmatchrule\u201d:{\u2026}}\u3002<br \/>&nbsp;\u6211\u4eec\u53d1\u73b0\uff0c\u201c\u5339\u914d\u201d\u8fd9\u6bb5json\u548c\u201cbutton\u201d\u662f\u540c\u7ea7\u7684\uff0c\u5206\u6790\u548c\u5b9e\u73b0\u548c\u4e0a\u9762\u57fa\u672c\u7b49\u540c\uff0c\u76f4\u63a5\u7ed9\u51fa\u5b9e\u73b0\u7684javabean\u3002<\/p>\n<p><\/p>\n<pre>\/\/\u5339\u914d\u7684json\u5bf9\u5e94\u7684json\r\npublic&nbsp;class&nbsp;MatchRule&nbsp;{\r\nprivate&nbsp;String&nbsp;group_id;\r\nprivate&nbsp;String&nbsp;sex;\r\nprivate&nbsp;String&nbsp;client_platform_type;\r\nprivate&nbsp;String&nbsp;country;\r\nprivate&nbsp;String&nbsp;province;\r\nprivate&nbsp;String&nbsp;city;\r\nprivate&nbsp;String&nbsp;language;\r\n}\r\n\r\n\/\/\u4fee\u6539Menu.java\r\npublic&nbsp;class&nbsp;Menu&nbsp;{\r\n@SerializedName(\"button\")\r\nprivate&nbsp;List&lt;fatherbutton&gt;&nbsp;fatherButtons;\r\nprivate&nbsp;MatchRule&nbsp;matchrule;\r\n}&lt;\/fatherbutton&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p><span style=\"color: #800000\"><strong>&nbsp;\u81ea\u5b9a\u4e49\u83dc\u5355\u7684\u5b9e\u73b0<br \/><\/strong><\/span>&nbsp;\u4efb\u52a1\uff0c\u6211\u4eec\u5b9e\u73b0\u6240\u6709\u5fae\u4fe1\u6309\u94ae\u54cd\u5e94\u7c7b\u578b\uff1a<br \/>&nbsp;\u4efb\u52a1\uff08\u6ce8\u91ca\uff1a\u201cm-0\u201d\u8868\u793a\u7236\u6309\u94ae\uff1b\u201cm-n\u201d\u8868\u793a\u7b2cm\u4e2a\u7236\u6309\u94ae\uff0c\u7b2cn\u4e2a\u5b50\u6309\u94ae\uff08m,n\u22600\uff09\uff09\uff1a1-0\uff1a\u540d\u5b57\uff1aclick\uff0c\u54cd\u5e94\u70b9\u51fb\u4e8b\u4ef6\uff1a\u70b9\u51fb\u63a8\u4e8b\u4ef6&nbsp;\u30022-0\uff1a\u540d\u5b57:\u7236\u6309\u94ae2\u30022-1\uff1a\u540d\u5b57\uff1aview,\u54cd\u5e94\u4e8b\u4ef6\uff1a\u8df3\u8f6c\u7f51\u9875\uff1b2-2\uff1a\u540d\u5b57\uff1ascancode_push\uff0c\u54cd\u5e94\u4e8b\u4ef6\uff1a\u626b\u7801\u63a8\u4e8b\u4ef6\uff1b2-3\uff1a\u540d\u5b57\uff1ascancode_waitmsg\uff0c\u54cd\u5e94\u4e8b\u4ef6\uff1a\u626b\u7801\u63a8\u4e8b\u4ef6\u4e14\u5f39\u51fa\u201c\u6d88\u606f\u63a5\u6536\u4e2d\u201d\u63d0\u793a\u6846\uff1b2-4\uff1a\u540d\u5b57\uff1apic_sysphoto\uff0c\u54cd\u5e94\u4e8b\u4ef6<br \/>&nbsp;\uff1a\u5f39\u51fa\u7cfb\u7edf\u62cd\u7167\u53d1\u56fe\u30022-5\uff1a\u540d\u5b57\uff1apic_photo_or_album\uff0c\u54cd\u5e94\u4e8b\u4ef6\uff1a\u5f39\u51fa\u62cd\u7167\u6216\u8005\u76f8\u518c\u53d1\u56fe\u30023-0\uff1a\u540d\u5b57:\u7236\u6309\u94ae3\u30023-1\uff1a\u540d\u5b57<br \/>&nbsp;\uff1apic_weixin,\u54cd\u5e94\u4e8b\u4ef6\uff1a\u5f39\u51fa\u5fae\u4fe1\u76f8\u518c\u53d1\u56fe\u5668\uff1b3-2\uff1a\u540d\u5b57\uff1alocation_select\uff0c\u54cd\u5e94\u4e8b\u4ef6\uff1a\u5f39\u51fa\u5730\u7406\u4f4d\u7f6e\u9009\u62e9\u5668\uff1b3-3\uff1a\u540d\u5b57\uff1amedia_id\uff0c\u54cd\u5e94\u4e8b\u4ef6\uff1a\u4e0b\u53d1\u6d88\u606f\uff08\u9664\u6587\u672c\u6d88\u606f\uff09\uff1b3-4\uff1a\u540d\u5b57\uff1aview_limited\uff0c\u54cd\u5e94\u4e8b\u4ef6\uff1a\u8df3\u8f6c\u56fe\u6587\u6d88\u606furl\u3002<\/p>\n<p>\u5b9e\u73b0\u6e90\u7801\uff08\u5f15\u7528\u7684AccessTokenUtils.java\u5728\u7b2c\u4e00\u90e8\u5206\uff1a\u5de5\u5177\u7c7bAccessTokenUtils\u7684\u5c01\u88c5\uff09<\/p>\n<p><\/p>\n<pre>&nbsp;\/*\r\n&nbsp;&nbsp;*&nbsp;\u521b\u5efa\u81ea\u5b9a\u4e49\u83dc\u5355\u3002\r\n&nbsp;&nbsp;*\/\r\n&nbsp;@Test\r\n&nbsp;public&nbsp;void&nbsp;createCommMenu()&nbsp;{\r\n&nbsp;&nbsp;String&nbsp;ACCESS_TOKEN&nbsp;=&nbsp;AccessTokenUtils.getAccessToken();\/\/&nbsp;\u83b7\u53d6AccessToken\uff0cAccessTokenUtils\u662f\u5c01\u88c5\u597d\u7684\u7c7b\r\n&nbsp;&nbsp;\/\/&nbsp;\u62fc\u63a5api\u8981\u6c42\u7684httpsurl\u94fe\u63a5\r\n&nbsp;&nbsp;String&nbsp;urlString&nbsp;=&nbsp;\"https:\/\/api.weixin.qq.com\/cgi-bin\/menu\/create?access_token=\"\r\n&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;ACCESS_TOKEN;\r\n&nbsp;&nbsp;try&nbsp;{\r\n&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u521b\u5efa\u4e00\u4e2aurl\r\n&nbsp;&nbsp;&nbsp;URL&nbsp;reqURL&nbsp;=&nbsp;new&nbsp;URL(urlString);\r\n&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u62ff\u53d6\u94fe\u63a5\r\n&nbsp;&nbsp;&nbsp;HttpsURLConnection&nbsp;httpsConn&nbsp;=&nbsp;(HttpsURLConnection)&nbsp;reqURL\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.openConnection();\r\n&nbsp;&nbsp;&nbsp;httpsConn.setDoOutput(true);\r\n&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u53d6\u5f97\u8be5\u8fde\u63a5\u7684\u8f93\u51fa\u6d41\uff0c\u4ee5\u8bfb\u53d6\u54cd\u5e94\u5185\u5bb9\r\n&nbsp;&nbsp;&nbsp;OutputStreamWriter&nbsp;osr&nbsp;=&nbsp;new&nbsp;OutputStreamWriter(\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpsConn.getOutputStream());\r\n&nbsp;&nbsp;&nbsp;osr.write(getMenuJson());\/\/&nbsp;\u4f7f\u7528\u672c\u7c7b\u5916\u90e8\u65b9\u6cd5getMenuJson()\r\n&nbsp;&nbsp;&nbsp;osr.close();\r\n\r\n&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u8fd4\u56de\u7ed3\u679c\r\n&nbsp;&nbsp;&nbsp;InputStreamReader&nbsp;isr&nbsp;=&nbsp;new&nbsp;InputStreamReader(\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpsConn.getInputStream());\r\n&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u8bfb\u53d6\u670d\u52a1\u5668\u7684\u54cd\u5e94\u5185\u5bb9\u5e76\u663e\u793a\r\n&nbsp;&nbsp;&nbsp;char[]&nbsp;chars&nbsp;=&nbsp;new&nbsp;char[1024];\r\n&nbsp;&nbsp;&nbsp;String&nbsp;reslut&nbsp;=&nbsp;\"\";\r\n&nbsp;&nbsp;&nbsp;int&nbsp;len;\r\n&nbsp;&nbsp;&nbsp;while&nbsp;((len&nbsp;=&nbsp;isr.read(chars))&nbsp;!=&nbsp;-1)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;reslut&nbsp;+=&nbsp;new&nbsp;String(chars,&nbsp;0,&nbsp;len);\r\n&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;System.out.println(\"\u8fd4\u56de\u7ed3\u679c:\"&nbsp;+&nbsp;reslut);\r\n&nbsp;&nbsp;&nbsp;isr.close();\r\n&nbsp;&nbsp;}&nbsp;catch&nbsp;(IOException&nbsp;e)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;e.printStackTrace();\r\n&nbsp;&nbsp;}\r\n&nbsp;}\r\n\r\n&nbsp;public&nbsp;String&nbsp;getMenuJson()&nbsp;{\r\n&nbsp;&nbsp;Gson&nbsp;gson&nbsp;=&nbsp;new&nbsp;Gson();\/\/&nbsp;json\u5904\u7406\u5de5\u5177\r\n\r\n&nbsp;&nbsp;Menu&nbsp;menu&nbsp;=&nbsp;new&nbsp;Menu();\/\/&nbsp;\u83dc\u5355\u7c7b\r\n&nbsp;&nbsp;List&lt;fatherbutton&gt;&nbsp;fatherButtons&nbsp;=&nbsp;new&nbsp;ArrayList&lt;fatherbutton&gt;();\/\/&nbsp;\u83dc\u5355\u4e2d\u7684\u7236\u6309\u94ae\u96c6\u5408\r\n&nbsp;&nbsp;\/\/&nbsp;-----------\r\n&nbsp;&nbsp;\/\/&nbsp;\u7236\u6309\u94ae1\r\n&nbsp;&nbsp;FatherButton&nbsp;fb1&nbsp;=&nbsp;new&nbsp;FatherButton();\r\n&nbsp;&nbsp;fb1.setName(\"click\");\r\n&nbsp;&nbsp;fb1.setType(\"click\");\r\n&nbsp;&nbsp;fb1.setKey(\"10\");\r\n&nbsp;&nbsp;\/\/&nbsp;-------------\r\n&nbsp;&nbsp;\/\/&nbsp;\u7236\u6309\u94ae2\r\n&nbsp;&nbsp;FatherButton&nbsp;fb2&nbsp;=&nbsp;new&nbsp;FatherButton();\r\n&nbsp;&nbsp;fb2.setName(\"\u7236\u6309\u94ae2\");\r\n&nbsp;&nbsp;List&lt;sonbutton&gt;&nbsp;sonButtons2&nbsp;=&nbsp;new&nbsp;ArrayList&lt;sonbutton&gt;();\/\/&nbsp;\u5b50\u6309\u94ae\u7684\u96c6\u5408\r\n\r\n&nbsp;&nbsp;\/\/&nbsp;\u5b50\u6309\u94ae2-1\r\n&nbsp;&nbsp;SonButton&nbsp;sb21&nbsp;=&nbsp;new&nbsp;SonButton();\r\n&nbsp;&nbsp;sb21.setName(\"view\");\r\n&nbsp;&nbsp;sb21.setUrl(\"http:\/\/www.baidu.com\");\r\n&nbsp;&nbsp;sb21.setType(\"view\");\r\n&nbsp;&nbsp;\/\/&nbsp;\u5b50\u6309\u94ae2-2\r\n&nbsp;&nbsp;SonButton&nbsp;sb22&nbsp;=&nbsp;new&nbsp;SonButton();\r\n&nbsp;&nbsp;sb22.setName(\"scancode_push\");\r\n&nbsp;&nbsp;sb22.setType(\"scancode_push\");\r\n&nbsp;&nbsp;sb22.setKey(\"22\");\r\n&nbsp;&nbsp;\/\/&nbsp;\u5b50\u6309\u94ae2-3\r\n&nbsp;&nbsp;SonButton&nbsp;sb23&nbsp;=&nbsp;new&nbsp;SonButton();\r\n&nbsp;&nbsp;sb23.setName(\"scancode_waitmsg\");\r\n&nbsp;&nbsp;sb23.setType(\"scancode_waitmsg\");\r\n&nbsp;&nbsp;sb23.setKey(\"23\");\r\n&nbsp;&nbsp;\/\/&nbsp;\u5b50\u6309\u94ae2-4\r\n&nbsp;&nbsp;SonButton&nbsp;sb24&nbsp;=&nbsp;new&nbsp;SonButton();\r\n&nbsp;&nbsp;sb24.setName(\"pic_sysphoto\");\r\n&nbsp;&nbsp;sb24.setType(\"pic_sysphoto\");\r\n&nbsp;&nbsp;sb24.setKey(\"24\");\r\n&nbsp;&nbsp;\/\/&nbsp;\u5b50\u6309\u94ae2-5\r\n&nbsp;&nbsp;SonButton&nbsp;sb25&nbsp;=&nbsp;new&nbsp;SonButton();\r\n&nbsp;&nbsp;sb25.setName(\"pic_photo_or_album\");\r\n&nbsp;&nbsp;sb25.setType(\"pic_photo_or_album\");\r\n&nbsp;&nbsp;sb25.setKey(\"25\");\r\n\r\n&nbsp;&nbsp;\/\/&nbsp;\u6dfb\u52a0\u5b50\u6309\u94ae\u5230\u5b50\u6309\u94ae\u96c6\u5408\r\n&nbsp;&nbsp;sonButtons2.add(sb21);\r\n&nbsp;&nbsp;sonButtons2.add(sb22);\r\n&nbsp;&nbsp;sonButtons2.add(sb23);\r\n&nbsp;&nbsp;sonButtons2.add(sb24);\r\n&nbsp;&nbsp;sonButtons2.add(sb25);\r\n\r\n&nbsp;&nbsp;\/\/&nbsp;\u5c06\u5b50\u6309\u94ae\u653e\u52302-0\u7236\u6309\u94ae\u96c6\u5408\r\n&nbsp;&nbsp;fb2.setSonButtons(sonButtons2);\r\n\r\n&nbsp;&nbsp;\/\/&nbsp;------------------\r\n&nbsp;&nbsp;\/\/&nbsp;\u7236\u6309\u94ae3\r\n&nbsp;&nbsp;FatherButton&nbsp;fb3&nbsp;=&nbsp;new&nbsp;FatherButton();\r\n&nbsp;&nbsp;fb3.setName(\"\u7236\u6309\u94ae3\");\r\n&nbsp;&nbsp;List&lt;sonbutton&gt;&nbsp;sonButtons3&nbsp;=&nbsp;new&nbsp;ArrayList&lt;sonbutton&gt;();\r\n\r\n&nbsp;&nbsp;\/\/&nbsp;\u5b50\u6309\u94ae3-1\r\n&nbsp;&nbsp;SonButton&nbsp;sb31&nbsp;=&nbsp;new&nbsp;SonButton();\r\n&nbsp;&nbsp;sb31.setName(\"pic_weixin\");\r\n&nbsp;&nbsp;sb31.setType(\"pic_weixin\");\r\n&nbsp;&nbsp;sb31.setKey(\"31\");\r\n&nbsp;&nbsp;\/\/&nbsp;\u5b50\u6309\u94ae3-2\r\n&nbsp;&nbsp;SonButton&nbsp;sb32&nbsp;=&nbsp;new&nbsp;SonButton();\r\n&nbsp;&nbsp;sb32.setName(\"locatselect\");\r\n&nbsp;&nbsp;sb32.setType(\"location_select\");\r\n&nbsp;&nbsp;sb32.setKey(\"32\");\r\n&nbsp;&nbsp;\/\/&nbsp;\/\/&nbsp;\u5b50\u6309\u94ae3-3--&amp;gt;\u6d4b\u8bd5\u4e0d\u4e86\uff0c\u56e0\u4e3a\u8981media_id\u3002\u8fd9\u9700\u8981\u8c03\u7528\u7d20\u6750id.\r\n&nbsp;&nbsp;\/\/&nbsp;SonButton&nbsp;sb33&nbsp;=&nbsp;new&nbsp;SonButton();\r\n&nbsp;&nbsp;\/\/&nbsp;sb33.setName(\"media_id\");\r\n&nbsp;&nbsp;\/\/&nbsp;sb33.setType(\"media_id\");\r\n&nbsp;&nbsp;\/\/&nbsp;sb33.setMedia_id(\"???\");\r\n&nbsp;&nbsp;\/\/&nbsp;\/\/&nbsp;\u5b50\u6309\u94ae3-4--&amp;gt;\u6d4b\u8bd5\u4e0d\u4e86\uff0c\u56e0\u4e3a\u8981media_id\u3002\u8fd9\u9700\u8981\u8c03\u7528\u7d20\u6750id.\r\n&nbsp;&nbsp;\/\/&nbsp;SonButton&nbsp;sb34&nbsp;=&nbsp;new&nbsp;SonButton();\r\n&nbsp;&nbsp;\/\/&nbsp;sb34.setName(\"view_limited\");\r\n&nbsp;&nbsp;\/\/&nbsp;sb34.setType(\"view_limited\");\r\n&nbsp;&nbsp;\/\/&nbsp;sb34.setMedia_id(\"???\");\r\n\r\n&nbsp;&nbsp;\/\/&nbsp;\u6dfb\u52a0\u5b50\u6309\u94ae\u5230\u5b50\u6309\u94ae\u961f\u5217\r\n&nbsp;&nbsp;sonButtons3.add(sb31);\r\n&nbsp;&nbsp;sonButtons3.add(sb32);\r\n&nbsp;&nbsp;\/\/&nbsp;sonButtons3.add(sb33);\r\n&nbsp;&nbsp;\/\/&nbsp;sonButtons3.add(sb34);\r\n\r\n&nbsp;&nbsp;\/\/&nbsp;\u5c06\u5b50\u6309\u94ae\u653e\u52303-0\u7236\u6309\u94ae\u961f\u5217\r\n&nbsp;&nbsp;fb3.setSonButtons(sonButtons3);\r\n&nbsp;&nbsp;\/\/&nbsp;---------------------\r\n\r\n&nbsp;&nbsp;\/\/&nbsp;\u5c06\u7236\u6309\u94ae\u52a0\u5165\u5230\u7236\u6309\u94ae\u96c6\u5408\r\n&nbsp;&nbsp;fatherButtons.add(fb1);\r\n&nbsp;&nbsp;fatherButtons.add(fb2);\r\n&nbsp;&nbsp;fatherButtons.add(fb3);\r\n\r\n&nbsp;&nbsp;\/\/&nbsp;\u5c06\u7236\u6309\u94ae\u961f\u5217\u52a0\u5165\u5230\u83dc\u5355\u680f\r\n&nbsp;&nbsp;menu.setFatherButtons(fatherButtons);\r\n&nbsp;&nbsp;String&nbsp;json&nbsp;=&nbsp;gson.toJson(menu);\r\n&nbsp;&nbsp;System.out.println(json);\/\/&nbsp;\u6d4b\u8bd5\u8f93\u51fa\r\n&nbsp;&nbsp;return&nbsp;json;\r\n\r\n&nbsp;}&lt;\/sonbutton&gt;&lt;\/sonbutton&gt;&lt;\/sonbutton&gt;&lt;\/sonbutton&gt;&lt;\/fatherbutton&gt;&lt;\/fatherbutton&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>&nbsp;<strong>\u4e2a\u6027\u5316\u83dc\u5355\u7684\u5b9e\u73b0<br \/><\/strong>&nbsp;\u2022\u4efb\u52a1\uff1a\u6839\u636e\u6027\u522b\u5c55\u793a\u4e0d\u540c\u7684\u6309\u94ae\u663e\u793a\uff08\u53ef\u4ee5\u6839\u636e\u6027\u522b\u3001\u5730\u533a\u3001\u5206\u7ec4\u624b\u673a\u64cd\u4f5c\u7cfb\u7edf\u7b49\uff09<br \/>&nbsp;\u2022\u4fee\u6539\u4ee3\u7801\u4e00\uff0c\u56e0\u4e3a\u662f\u4e0d\u540c\u7684\u5fae\u4fe1\u540e\u53f0\u5b9e\u73b0\uff0c\u6240\u4ee5\u63a5\u53e3\u4e5f\u4e0d\u4e00\u6837\uff0c\u4e0d\u8fc7\u8fd8\u662fPOST\u8bf7\u6c42\uff0c\u4ee3\u7801\u4e0d\u7528\u6539\uff0c\u53ea\u8981\u66ff\u6362\u539f\u6765urlString\u5373\u53ef\u3002<\/p>\n<p><\/p>\n<pre>\/\/&nbsp;\u62fc\u63a5api\u8981\u6c42\u7684httpsurl\u94fe\u63a5\r\nString&nbsp;urlString&nbsp;=&nbsp;\"https:\/\/api.weixin.qq.com\/cgi-bin\/menu\/addconditional?access_token=\"\r\n&nbsp;&nbsp;&nbsp;+&nbsp;ACCESS_TOKEN;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>&nbsp;\u2022\u4fee\u6539\u4ee3\u7801\u4e8c\uff0c\u53ea\u8981\u521b\u5efa\u4e00\u4e2aMatchRule\uff0c\u8bbe\u7f6e\u5339\u914d\u89c4\u5219\uff0c\u7136\u540e\u5c06matchrule\u52a0\u5165\u5230menu\u4fbf\u53ef\u4ee5\u5b8c\u6210\u5339\u914d\u89c4\u5219\u3002<\/p>\n<p><\/p>\n<pre>\/\/&nbsp;-----\r\n\/\/&nbsp;\u4ece\u6b64\u5904\u5f00\u59cb\u8bbe\u7f6e\u4e2a\u6027\u83dc\u5355\r\nMatchRule&nbsp;matchrule&nbsp;=&nbsp;new&nbsp;MatchRule();\r\nmatchrule.setSex(\"2\");\/\/&nbsp;\u7537\u751f\r\nmenu.setMatchrule(matchrule);\r\n\/\/&nbsp;----<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4ee5\u4e0a\u5c31\u662fjava\u5fae\u4fe1\u5f00\u53d1API\u5fae\u4fe1\u81ea\u5b9a\u4e49\u4e2a\u6027\u5316\u83dc\u5355\u5b9e\u73b0\u5b9e\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\u4e3b\u8981\u4e3a\u5927\u5bb6\u8be6\u7ec6\u4ecb\u7ecd\u4e86java\u5fae\u4fe1\u5f00\u53d1api\u7b2c\u56db\u6b65\uff0c\u81ea\u5b9a\u4e49\u83dc\u5355\u4ee5\u53ca\u4e2a\u6027\u5316\u83dc\u5355\u5b9e\u73b0 \uff0c\u611f\u5174\u8da3\u7684\u5c0f\u4f19\u4f34\u4eec\u53ef\u4ee5\u53c2\u8003\u4e00\u4e0b \u5fae\u4fe1\u5982\u4f55\u5b9e\u73b0\u81ea\u5b9a\u4e49\u4e2a\u6027\u5316\u83dc\u5355\uff0c\u4e0b\u9762\u4e3a\u5927\u5bb6\u4ecb\u7ecd \u4e00\u3001\u5168\u5c40\u8bf4\u660e\u8be6\u7ec6\u8bf4\u660e\u8bf7\u53c2\u8003\u524d\u4e24\u7bc7\u6587\u7ae0\u3002 \u4e8c\u3001\u672c\u6587\u8bf4\u660e\u672c\u6587\u5206\u4e3a\u4e94\u90e8\u5206\uff1a&nbsp;&nbsp;&nbsp; * \u5de5\u5177\u7c7bAccessTokenUtils\u7684\u5c01\u88c5&nbsp;&nbsp;&nbsp; * \u81ea\u5b9a\u4e49\u83dc\u5355\u548c\u4e2a\u6027\u5316\u83dc\u5355\u6587\u6863\u7684\u9605\u8bfb\u89e3\u6790&nbsp;&nbsp;&nbsp; * \u83dc\u5355JSON\u7684\u5206\u6790\u4ee5\u53ca\u6784\u5efa\u5bf9\u5e94bean&nbsp;&nbsp;&nbsp; * \u81ea\u5b9a\u4e49\u83dc\u5355\u7684\u5b9e\u73b0&nbsp;&nbsp;&nbsp; * \u4e2a\u6027\u5316\u83dc\u5355\u7684\u5b9e\u73b0\u5fae\u4fe1\u81ea\u5b9a\u4e49\u83dc\u5355\u6240\u6709\u7c7b\u578b\u83dc\u5355\u90fd\u7ed9\u51fa\u6f14\u793a\u672c\u6587\u7ed3\u675f\u4f1a\u7ed9\u51fa\u5305\u62ec\u672c\u6587\u524d\u56db\u7bc7\u6587\u7ae0\u7684\u6240\u6709\u6f14\u793a\u6e90\u7801 \u5de5\u5177\u7c7bAccessTokenUtils\u7684\u5c01\u88c5\u5728\u4e0a\u6587\u4e2d\u5173\u4e8eAccessToken\u7684\u83b7\u53d6\u548c\u5b9a\u65f6\u4fdd\u5b58\u5df2\u7ecf\u8be6\u7ec6\u4ecb\u7ecd\u8fc7\uff0c\u6b64\u5904\u76f4\u63a5\u7ed9\u51fa\u5904\u7406\u8fc7\u4e4b\u540e\u5c01\u88c5\u7684AccessTokenUtils\uff0c\u5b9e\u73b0\u539f\u7406\u4ee5\u53ca\u6587\u6863\u9605\u8bfb\u4e0d\u518d\u7ed9\u51fa\u3002AccessTokenUtils.java \u7acb\u5373\u5b66\u4e60\u201c\u201d\uff1b package&nbsp;com.gist.utils; import&nbsp;java.io.File; import&nbsp;java.io.FileInputStream; import&nbsp;java.io.FileOutputStream; import&nbsp;java.io.IOException; import&nbsp;java.io.InputStreamReader; import&nbsp;java.net.URL; import&nbsp;javax.net.ssl.HttpsURLConnection; import&nbsp;com.gist.bean.Access_token; import&nbsp;com.google.gson.Gson; \/** &nbsp;*&nbsp;@author&nbsp;\u9ad8\u8fdc&nbsp;\u90ae\u7bb1\uff1awgyscsf@163.com&nbsp;\u535a\u5ba2&nbsp;http:\/\/blog.csdn.net\/wgyscsf &nbsp;*&nbsp;&nbsp;&nbsp;\u7f16\u5199\u65f6\u671f&nbsp;2016-4-7&nbsp;\u4e0b\u53485:44:33 &nbsp;*\/ public&nbsp;class&nbsp;AccessTokenUtils&nbsp;{ &nbsp;private&nbsp;static&nbsp;final&nbsp;long&nbsp;MAX_TIME&nbsp;=&nbsp;7200&nbsp;*&nbsp;1000;\/\/&nbsp;\u5fae\u4fe1\u5141\u8bb8\u6700\u957fAccess_token\u6709\u6548\u65f6\u95f4\uff08ms\uff09 &nbsp;private&nbsp;static&nbsp;final&nbsp;String&nbsp;TAG&nbsp;=&nbsp;&#8220;WeixinApiTest&#8221;;\/\/&nbsp;TAG &nbsp;private&nbsp;static&nbsp;final&nbsp;String&nbsp;APPID&nbsp;=&nbsp;&#8220;wx889b020b3666b0b8&#8221;;\/\/&nbsp;APPID &nbsp;private&nbsp;static&nbsp;final&nbsp;String&nbsp;SECERT&nbsp;=&nbsp;&#8220;6da7676bf394f0a9f15fbf06027856bb&#8221;;\/\/&nbsp;\u79d8\u94a5 &nbsp;\/* &nbsp;&nbsp;*&nbsp;\u8be5\u65b9\u6cd5\u5b9e\u73b0\u83b7\u53d6Access_token\u3001\u4fdd\u5b58\u5e76\u4e14\u53ea\u4fdd\u5b582\u5c0f\u65f6Access_token\u3002\u5982\u679c\u8d85\u8fc7\u4e24\u4e2a\u5c0f\u65f6\u91cd\u65b0\u83b7\u53d6\uff1b\u5982\u679c\u6ca1\u6709\u8d85\u8fc7\u4e24\u4e2a\u5c0f\u65f6\uff0c\u76f4\u63a5\u83b7\u53d6\u3002\u8be5\u65b9\u6cd5\u4f9d\u8d56 &nbsp;&nbsp;*&nbsp;\uff1apublic&nbsp;static&nbsp;String&nbsp;getAccessToken()\uff1b &nbsp;&nbsp;*&nbsp; &nbsp;&nbsp;*&nbsp;\u601d\u8def:\u5c06\u83b7\u53d6\u5230\u7684Access_token\u548c\u5f53\u524d\u65f6\u95f4\u5b58\u50a8\u5230file\u91cc\uff0c &nbsp;&nbsp;*&nbsp;\u53d6\u51fa\u65f6\u5224\u65ad\u5f53\u524d\u65f6\u95f4\u548c\u5b58\u50a8\u91cc\u9762\u7684\u8bb0\u5f55\u7684\u65f6\u95f4\u7684\u65f6\u95f4\u5dee\uff0c\u5982\u679c\u5927\u4e8eMAX_TIME,\u91cd\u65b0\u83b7\u53d6\uff0c\u5e76\u4e14\u5c06\u83b7\u53d6\u5230\u7684\u5b58\u50a8\u5230file\u66ff\u6362\u539f\u6765\u7684\u5185\u5bb9 &nbsp;&nbsp;*&nbsp;\uff0c\u5982\u679c\u5c0f\u4e8eMAX_TIME\uff0c\u76f4\u63a5\u83b7\u53d6\u3002 &nbsp;&nbsp;*\/ &nbsp;\/\/&nbsp;\u4e3a\u4e86\u8c03\u7528\u4e0d\u629b\u5f02\u5e38\uff0c\u8fd9\u91cc\u5168\u90e8\u6355\u6349\u5f02\u5e38\uff0c\u4ee3\u7801\u6709\u70b9\u957f &nbsp;public&nbsp;static&nbsp;String&nbsp;getSavedAccess_token()&nbsp;{ &nbsp;&nbsp;Gson&nbsp;gson&nbsp;=&nbsp;new&nbsp;Gson();\/\/&nbsp;\u7b2c\u4e09\u65b9jar,\u5904\u7406json\u548cbean\u7684\u8f6c\u6362 &nbsp;&nbsp;String&nbsp;mAccess_token&nbsp;=&nbsp;null;\/\/&nbsp;\u9700\u8981\u83b7\u53d6\u7684Access_token\uff1b &nbsp;&nbsp;FileOutputStream&nbsp;fos&nbsp;=&nbsp;null;\/\/&nbsp;\u8f93\u51fa\u6d41 &nbsp;&nbsp;FileInputStream&nbsp;fis&nbsp;=&nbsp;null;\/\/&nbsp;\u8f93\u5165\u6d41 &nbsp;&nbsp;File&nbsp;file&nbsp;=&nbsp;new&nbsp;File(&#8220;temp_access_token.temp&#8221;);\/\/&nbsp;Access_token\u4fdd\u5b58\u7684\u4f4d\u7f6e &nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;&nbsp;\/\/&nbsp;\u5982\u679c\u6587\u4ef6\u4e0d\u5b58\u5728\uff0c\u521b\u5efa &nbsp;&nbsp;&nbsp;if&nbsp;(!file.exists())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;file.createNewFile(); [&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-29227","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29227","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=29227"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29227\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=29227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=29227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=29227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}