{"id":97,"date":"2019-06-19T00:28:27","date_gmt":"2019-06-18T16:28:27","guid":{"rendered":"http:\/\/blog.mrfai.cn\/?p=97"},"modified":"2020-06-10T17:00:31","modified_gmt":"2020-06-10T09:00:31","slug":"java%e5%9f%ba%e4%ba%8ejfinal%e6%a1%86%e6%9e%b6%e8%b0%83%e7%94%a8%e7%99%be%e5%ba%a6%e5%9c%b0%e5%9b%be%e5%85%ac%e4%ba%a4%e8%b7%af%e7%ba%bf%e8%a7%84%e5%88%92api","status":"publish","type":"post","link":"https:\/\/blog.mrfai.cn\/index.php\/2019\/06\/19\/97\/","title":{"rendered":"(JAVA)\u57fa\u4e8eJFinal\u6846\u67b6\u8c03\u7528\u767e\u5ea6\u5730\u56fe\u516c\u4ea4\u8def\u7ebf\u89c4\u5212API"},"content":{"rendered":"\n<p>\u8fd9\u6b21\u7528JAVA\u4ee3\u7801\u6765\u590d\u73b0\u4e00\u6b21\u8c03\u7528\u3002\u57fa\u4e8eJFinal\u6846\u67b6\u3002\uff08\u4e0a\u6b21PHP\u8c03\u7528\u770b\u4e0a\u4e00\u7bc7\u6587\u7ae0\uff09<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u5728\u63a7\u5236\u5668\u521b\u5efaBaidumapController<\/h2>\n\n\n\n<pre class=\"wp-block-verse\">package Controller;\n\nimport Calculation.SnCal;\nimport com.jfinal.core.Controller;\nimport com.jfinal.kit.HttpKit;\nimport java.io.UnsupportedEncodingException;\nimport java.net.URLEncoder;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic class BaidumapController extends Controller {\n    public void index() throws UnsupportedEncodingException {\n    String sk = \"yoursk\";\n    String uri = \"\/direction\/v2\/transit?\";\n\n    String ak = \"yourak\";\n\n    String origin = \"22.693621,113.817503\";\n    String destination = \"22.579575,114.143696\";\n    String origin_uid = \"\u6865\u5934-\u5730\u94c1\u7ad9\";\n    String destination_uid = \"\u592a\u5b89-\u5730\u94c1\u7ad9\";\n    String departure_time = \"10:00-12:00\";\n    String tactics_incity = \"5\";\n    int timestamp = (int) (System.<em>currentTimeMillis<\/em>() \/ 1000);\n\n    SnCal snCal = new SnCal();\n\n\/* \u8ba1\u7b97sn\u8ddf\u53c2\u6570\u5bf9\u51fa\u73b0\u987a\u5e8f\u6709\u5173\uff0cget\u8bf7\u6c42\u8bf7\u4f7f\u7528LinkedHashMap\u4fdd\u5b58&lt;key,value>\uff0c\u8be5\u65b9\u6cd5\u6839\u636ekey\u7684\u63d2\u5165\u987a\u5e8f\u6392\u5e8f\uff1bpost\u8bf7\u4f7f\u7528TreeMap\u4fdd\u5b58&lt;key,value>\uff0c\u8be5\u65b9\u6cd5\u4f1a\u81ea\u52a8\u5c06key\u6309\u7167\u5b57\u6bcda-z\u987a\u5e8f\u6392\u5e8f\u3002\u6240\u4ee5get\u8bf7\u6c42\u53ef\u81ea\u5b9a\u4e49\u53c2\u6570\u987a\u5e8f\uff08sn\u53c2\u6570\u5fc5\u987b\u5728\u6700\u540e\uff09\u53d1\u9001\u8bf7\u6c42\uff0c\u4f46\u662fpost\u8bf7\u6c42\u5fc5\u987b\u6309\u7167\u5b57\u6bcda-z\u987a\u5e8f\u586b\u5145body\uff08sn\u53c2\u6570\u5fc5\u987b\u5728\u6700\u540e\uff09\u3002\u4ee5get\u8bf7\u6c42\u4e3a\u4f8b\uff1ahttp:\/\/api.map.baidu.com\/geocoder\/v2\/?address=\u767e\u5ea6\u5927\u53a6&amp;output=json&amp;ak=yourak\uff0cparamsMap\u4e2d\u5148\u653e\u5165address\uff0c\u518d\u653eoutput\uff0c\u7136\u540e\u653eak\uff0c\u653e\u5165\u987a\u5e8f\u5fc5\u987b\u8ddfget\u8bf7\u6c42\u4e2d\u5bf9\u5e94\u53c2\u6570\u7684\u51fa\u73b0\u987a\u5e8f\u4fdd\u6301\u4e00\u81f4\u3002 *\/\n\n    Map paramsMap = new LinkedHashMap&lt;String, String>();\n    paramsMap.put(\"origin\", origin);\n    paramsMap.put(\"destination\", destination);\n    paramsMap.put(\"origin_uid\", origin_uid);\n    paramsMap.put(\"destination_uid\", destination_uid);\n    paramsMap.put(\"departure_time\", departure_time);\n    paramsMap.put(\"tactics_incity\", tactics_incity);\n    paramsMap.put(\"ak\", ak);\n    paramsMap.put(\"timestamp\", Integer.<em>toString<\/em>(timestamp));\n\n\n    \/\/ \u8c03\u7528\u4e0b\u9762\u7684toQueryString\u65b9\u6cd5\uff0c\u5bf9LinkedHashMap\u5185\u6240\u6709value\u4f5cutf8\u7f16\u7801\uff0c\u62fc\u63a5\u8fd4\u56de\u7ed3\u679c\n    String paramsStr = snCal.toQueryString(paramsMap);\n\n     \/\/ \u5bf9paramsStr\u524d\u9762\u62fc\u63a5\u4e0auri\uff0c\u540e\u9762\u76f4\u63a5\u62fc\u63a5yoursk\n     String wholeStr = new String(uri + paramsStr + sk);\n\n     \/\/ \u5bf9\u4e0a\u9762wholeStr\u518d\u4f5cutf8\u7f16\u7801\n     String tempStr = URLEncoder.<em>encode<\/em>(wholeStr, \"UTF-8\");\n\n     \/\/ \u8c03\u7528\u4e0b\u9762\u7684MD5\u65b9\u6cd5\u5f97\u5230\u6700\u540e\u7684sn\u7b7e\u540d\n     String sn= snCal.MD5(tempStr);\n\n     \/\/ \u7528\u8fd4\u56de\u7684sn\u62fc\u63a5\u8fdbURL\n    String url = \"http:\/\/api.map.baidu.com\/direction\/v2\/transit?origin=\"+URLEncoder.<em>encode<\/em>(origin)+\"&amp;destination=\"+URLEncoder.<em>encode<\/em>(destination)+\"&amp;origin_uid=\"+URLEncoder.<em>encode<\/em>(origin_uid)+\"&amp;destination_uid=\"+URLEncoder.<em>encode<\/em>(destination_uid)+\"&amp;departure_time=\"+URLEncoder.<em>encode<\/em>(departure_time)+\"&amp;tactics_incity=\"+tactics_incity+\"&amp;ak=\"+ak+\"&amp;sn=\"+sn+\"&amp;timestamp=\"+timestamp;\n\n    \/\/ \u6a21\u62dfhttp get\u8bf7\u6c42\n    String json = HttpKit.<em>get<\/em>(url);\n\n    \/\/ \u8fd4\u56dejson\n    renderJson(json);\n    }\n}\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u5728\u516c\u5171\u51fd\u6570\u5305\u4e2d\u521b\u5efaSnCal\u7c7b<\/h2>\n\n\n\n<pre class=\"wp-block-verse\">package Calculation;\n\nimport java.io.UnsupportedEncodingException;\nimport java.net.URLEncoder;\nimport java.util.Map;\nimport java.util.Map.Entry;\n\n\/\/java\u7248\u8ba1\u7b97signature\u7b7e\u540d\npublic class SnCal {\n     \/\/ \u5bf9Map\u5185\u6240\u6709value\u4f5cutf8\u7f16\u7801\uff0c\u62fc\u63a5\u8fd4\u56de\u7ed3\u679c\n     public String toQueryString(Map&lt;?, ?&gt; data) throws UnsupportedEncodingException \n     {\n           StringBuffer queryString = new StringBuffer();\n           for (Entry&lt;?, ?&gt; pair : data.entrySet()) {\n                 queryString.append(pair.getKey() + \"=\");\n                 queryString.append(URLEncoder.<em>encode<\/em>((String) pair.getValue(), \"UTF-8\") + \"&amp;\");\n            }\n           if (queryString.length() &gt; 0) {\n                 queryString.deleteCharAt(queryString.length() - 1);\n           }\n           return queryString.toString();\n      }\n\n\n      \/\/ \u6765\u81eastackoverflow\u7684MD5\u8ba1\u7b97\u65b9\u6cd5\uff0c\u8c03\u7528\u4e86MessageDigest\u5e93\u51fd\u6570\uff0c\u5e76\u628abyte\u6570\u7ec4\u7ed3\u679c\u8f6c\u6362\u621016\u8fdb\u5236\n     public String MD5(String md5) {\n          try {\n              java.security.MessageDigest md = java.security.MessageDigest.<em>getInstance<\/em>(\"MD5\");\n              byte[] array = md.digest(md5.getBytes());\n              StringBuffer sb = new StringBuffer();\n              for (int i = 0; i &lt; array.length; ++i) {\n                   sb.append(Integer.<em>toHexString<\/em>((array[i] &amp; 0xFF) | 0x100).substring(1, 3));\n              }\n              return sb.toString();\n         } catch (java.security.NoSuchAlgorithmException e) {\n\n         }\n         return null;\n       }\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u6b21\u7528JAVA\u4ee3\u7801\u6765\u590d\u73b0\u4e00\u6b21\u8c03\u7528\u3002\u57fa\u4e8eJFinal&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/blog.mrfai.cn\/index.php\/2019\/06\/19\/97\/\">Continue reading<span class=\"screen-reader-text\">(JAVA)\u57fa\u4e8eJFinal\u6846\u67b6\u8c03\u7528\u767e\u5ea6\u5730\u56fe\u516c\u4ea4\u8def\u7ebf\u89c4\u5212API<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[16,17],"class_list":["post-97","post","type-post","status-publish","format-standard","hentry","category-java","tag-java","tag-jfinal","entry"],"_links":{"self":[{"href":"https:\/\/blog.mrfai.cn\/index.php\/wp-json\/wp\/v2\/posts\/97","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mrfai.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mrfai.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mrfai.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mrfai.cn\/index.php\/wp-json\/wp\/v2\/comments?post=97"}],"version-history":[{"count":7,"href":"https:\/\/blog.mrfai.cn\/index.php\/wp-json\/wp\/v2\/posts\/97\/revisions"}],"predecessor-version":[{"id":114,"href":"https:\/\/blog.mrfai.cn\/index.php\/wp-json\/wp\/v2\/posts\/97\/revisions\/114"}],"wp:attachment":[{"href":"https:\/\/blog.mrfai.cn\/index.php\/wp-json\/wp\/v2\/media?parent=97"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mrfai.cn\/index.php\/wp-json\/wp\/v2\/categories?post=97"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mrfai.cn\/index.php\/wp-json\/wp\/v2\/tags?post=97"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}