




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、eoLinker-API Shop POI檢索 Java調(diào)用示例代碼POI檢索通過關(guān)鍵詞查詢在某個地區(qū)的POI信息,支持市級、區(qū)縣級查詢:比如在廣州查詢“銀行”,接口將會輸出所有銀行的地理信息列表。該產(chǎn)品擁有以下APIs:POI搜索周邊POI搜索POI多邊形搜索注意,該示例代碼僅適用于 HYPERLINK 網(wǎng)站下API 使用該產(chǎn)品前,您需要通過 HYPERLINK /#/api/detail/?productID=97 /#/api/detail/?productID=97 申請API服務(wù)1.POI搜索package net.apishop.www.controller;import java
2、.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import .HttpURLConnection;import .MalformedURLException;import .URL;import .URLEncoder;import java.util.HashMap;import java.util.Map;import com.alibaba.fastjson.JSONObject;/* * http
3、UrlConnection訪問遠程接口工具 */public class Api /* * 方法體說明:向遠程接口發(fā)起請求,返回字節(jié)流類型結(jié)果 * param url 接口地址 * param requestMethod 請求方式 * param params 傳遞參數(shù) 重點:參數(shù)值需要用Base64進行轉(zhuǎn)碼 * return InputStream 返回結(jié)果 */ public static InputStream httpRequestToStream(String url, String requestMethod, Map params) InputStream is = null;
4、try String parameters = ; boolean hasParams = false; / 將參數(shù)集合拼接成特定格式,如name=zhangsan&age=24 for (String key : params.keySet() String value = URLEncoder.encode(params.get(key), UTF-8); parameters += key + = + value + &; hasParams = true; if (hasParams) parameters = parameters.substring(0, parameters.le
5、ngth() - 1); / 請求方式是否為get boolean isGet = get.equalsIgnoreCase(requestMethod); / 請求方式是否為post boolean isPost = post.equalsIgnoreCase(requestMethod); if (isGet) url += ? + parameters; URL u = new URL(url); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); / 請求的參數(shù)類型(使用restlet框架時,為了兼容框架,必
6、須設(shè)置Content-Type為“”空) conn.setRequestProperty(Content-Type, application/octet-stream); / conn.setRequestProperty(Content-Type, application/x-www-form-urlencoded); / 設(shè)置連接超時時間 conn.setConnectTimeout(50000); / 設(shè)置讀取返回內(nèi)容超時時間 conn.setReadTimeout(50000); / 設(shè)置向HttpURLConnection對象中輸出,因為post方式將請求參數(shù)放在http正文內(nèi),因此
7、需要設(shè)置為ture,默認(rèn)false if (isPost) conn.setDoOutput(true); / 設(shè)置從HttpURLConnection對象讀入,默認(rèn)為true conn.setDoInput(true); / 設(shè)置是否使用緩存,post方式不能使用緩存 if (isPost) conn.setUseCaches(false); / 設(shè)置請求方式,默認(rèn)為GET conn.setRequestMethod(requestMethod); / post方式需要將傳遞的參數(shù)輸出到conn對象中 if (isPost) DataOutputStream dos = new DataOu
8、tputStream(conn.getOutputStream(); dos.writeBytes(parameters); dos.flush(); dos.close(); / 從HttpURLConnection對象中讀取響應(yīng)的消息 / 執(zhí)行該語句時才正式發(fā)起請求 is = conn.getInputStream(); catch(UnsupportedEncodingException e) e.printStackTrace(); catch(MalformedURLException e) e.printStackTrace(); catch(IOException e) e.pr
9、intStackTrace(); return is; public static void main(String args) String url = /common/postcode/getPostCodeByAddr; String requestMethod = POST; Map params = new HashMap(); params.put(keyWords, ); /查詢關(guān)鍵字(規(guī)則: 多個關(guān)鍵字用“|”分割 若不指定city,并且搜索的為泛詞(例如“美食”)的情況下,返回的內(nèi)容為城市列表以及此城市內(nèi)有多少結(jié)果符合要求。) params.put(types, ); /查詢
10、POI類型(多個類型用“|”分割; 可選值:分類代碼 或 漢字(若用漢字,請嚴(yán)格按照附件之中的漢字填寫) 分類代碼由六位數(shù)字組成,一共分為三個部分,前兩個數(shù)字代表大類;中間兩個數(shù)字代表中類;最后兩個數(shù)字代表小類。 若指定了某個大類,則所屬的中類、小類都會被顯示。 例如:010000為汽車服務(wù)(大類) 010100為加油站(中類) 010101為中國石化(小類) 010900為汽車租賃(中類) ) params.put(city, ); /查詢城市(可選值:城市中文、中文全拼 如:北京/beijing 填入此參數(shù)后,會盡量優(yōu)先返回此城市數(shù)據(jù),但是不一定僅局限此城市結(jié)果,若僅需要某個城市數(shù)據(jù)請調(diào)用
11、citylimit參數(shù)。 如:在深圳市搜天安門,返回北京天安門結(jié)果。) params.put(cityLimit, ); /僅返回指定城市數(shù)據(jù)(可選值:true/false) params.put(children, ); /是否按照層級展示子POI數(shù)據(jù)(可選值:children=1) params.put(offset, ); /每頁記錄數(shù)據(jù)(強烈建議不超過25,若超過25可能造成訪問報錯) params.put(page, ); /當(dāng)前頁數(shù)(最大翻頁數(shù)100) params.put(building, ); /建筑物的POI編號(傳入建筑物POI編號之后,則只在該建筑物之內(nèi)進行搜索) pa
12、rams.put(floor, ); /搜索樓層(若傳入 建筑物的POI編號 + 樓層 ,則返回該建筑物內(nèi)當(dāng)前樓層的關(guān)鍵字搜索結(jié)果 若只傳入樓層,則返回參數(shù)不完全的提示 若傳入建筑物的POI編號 + 樓層,該樓層沒有對應(yīng)的搜索結(jié)果,則會返回建筑物之內(nèi)的內(nèi)容。) params.put(extensions, ); /此項默認(rèn)返回基本地址信息;取值為all返回地址信息、附近POI、道路以及道路交叉口信息 String result = null; try InputStream is = httpRequestToStream(url, requestMethod, params); byte b
13、 = new byteis.available(); is.read(b); result = new String(b); catch(IOException e) e.printStackTrace(); if (result != null) JSONObject jsonObject = JSONObject.parseObject(result); String status_code = jsonObject.getString(statusCode); if (status_code = 000000) / 狀態(tài)碼為000000, 說明請求成功 System.out.printl
14、n(請求成功: + jsonObject.getString(result); else / 狀態(tài)碼非000000, 說明請求失敗 System.out.println(請求失?。?+ jsonObject.getString(desc); else / 返回內(nèi)容異常,發(fā)送請求失敗,以下可根據(jù)業(yè)務(wù)邏輯自行修改 System.out.println(發(fā)送請求失敗); 2.周邊POI搜索package net.apishop.www.controller;import java.io.DataOutputStream;import java.io.IOException;import java.i
15、o.InputStream;import java.io.UnsupportedEncodingException;import .HttpURLConnection;import .MalformedURLException;import .URL;import .URLEncoder;import java.util.HashMap;import java.util.Map;import com.alibaba.fastjson.JSONObject;/* * httpUrlConnection訪問遠程接口工具 */public class Api /* * 方法體說明:向遠程接口發(fā)起請求
16、,返回字節(jié)流類型結(jié)果 * param url 接口地址 * param requestMethod 請求方式 * param params 傳遞參數(shù) 重點:參數(shù)值需要用Base64進行轉(zhuǎn)碼 * return InputStream 返回結(jié)果 */ public static InputStream httpRequestToStream(String url, String requestMethod, Map params) InputStream is = null; try String parameters = ; boolean hasParams = false; / 將參數(shù)集合拼
17、接成特定格式,如name=zhangsan&age=24 for (String key : params.keySet() String value = URLEncoder.encode(params.get(key), UTF-8); parameters += key + = + value + &; hasParams = true; if (hasParams) parameters = parameters.substring(0, parameters.length() - 1); / 請求方式是否為get boolean isGet = get.equalsIgnoreCas
18、e(requestMethod); / 請求方式是否為post boolean isPost = post.equalsIgnoreCase(requestMethod); if (isGet) url += ? + parameters; URL u = new URL(url); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); / 請求的參數(shù)類型(使用restlet框架時,為了兼容框架,必須設(shè)置Content-Type為“”空) conn.setRequestProperty(Content-Type, ap
19、plication/octet-stream); / conn.setRequestProperty(Content-Type, application/x-www-form-urlencoded); / 設(shè)置連接超時時間 conn.setConnectTimeout(50000); / 設(shè)置讀取返回內(nèi)容超時時間 conn.setReadTimeout(50000); / 設(shè)置向HttpURLConnection對象中輸出,因為post方式將請求參數(shù)放在http正文內(nèi),因此需要設(shè)置為ture,默認(rèn)false if (isPost) conn.setDoOutput(true); / 設(shè)置從Ht
20、tpURLConnection對象讀入,默認(rèn)為true conn.setDoInput(true); / 設(shè)置是否使用緩存,post方式不能使用緩存 if (isPost) conn.setUseCaches(false); / 設(shè)置請求方式,默認(rèn)為GET conn.setRequestMethod(requestMethod); / post方式需要將傳遞的參數(shù)輸出到conn對象中 if (isPost) DataOutputStream dos = new DataOutputStream(conn.getOutputStream(); dos.writeBytes(parameters)
21、; dos.flush(); dos.close(); / 從HttpURLConnection對象中讀取響應(yīng)的消息 / 執(zhí)行該語句時才正式發(fā)起請求 is = conn.getInputStream(); catch(UnsupportedEncodingException e) e.printStackTrace(); catch(MalformedURLException e) e.printStackTrace(); catch(IOException e) e.printStackTrace(); return is; public static void main(String ar
22、gs) String url = /common/postcode/getPostCodeByAddr; String requestMethod = POST; Map params = new HashMap(); params.put(location, ); /中心點坐標(biāo)(規(guī)則: 經(jīng)度和緯度用,分割,經(jīng)度在前,緯度在后,經(jīng)緯度小數(shù)點后不得超過6位) params.put(keyWords, ); /查詢關(guān)鍵字(規(guī)則: 多個關(guān)鍵字用“|”分割 若不指定city,并且搜索的為泛詞(例如“美食”)的情況下,返回的內(nèi)容為城市列表以及此城市內(nèi)有多少結(jié)果符合要求。) params.put(type
23、s, ); /查詢POI類型(多個類型用“|”分割; 可選值:分類代碼 或 漢字(若用漢字,請嚴(yán)格按照附件之中的漢字填寫) 分類代碼由六位數(shù)字組成,一共分為三個部分,前兩個數(shù)字代表大類;中間兩個數(shù)字代表中類;最后兩個數(shù)字代表小類。 若指定了某個大類,則所屬的中類、小類都會被顯示。 例如:010000為汽車服務(wù)(大類) 010100為加油站(中類) 010101為中國石化(小類) 010900為汽車租賃(中類) ) params.put(city, ); /查詢城市(可選值:城市中文、中文全拼 如:北京/beijing 填入此參數(shù)后,會盡量優(yōu)先返回此城市數(shù)據(jù),但是不一定僅局限此城市結(jié)果,若僅需要
24、某個城市數(shù)據(jù)請調(diào)用citylimit參數(shù)。 如:在深圳市搜天安門,返回北京天安門結(jié)果。) params.put(radius, ); /查詢半徑(取值范圍:0-50000。規(guī)則:大于50000按默認(rèn)值,單位:米) params.put(sortrule, ); /排序規(guī)則(規(guī)定返回結(jié)果的排序規(guī)則。 按距離排序:distance;綜合排序:weight,默認(rèn)為distance) params.put(offset, ); /每頁記錄數(shù)據(jù)(強烈建議不超過25,若超過25可能造成訪問報錯) params.put(page, ); /當(dāng)前頁數(shù)(最大翻頁數(shù)100) params.put(extensio
25、ns, ); /此項默認(rèn)返回基本地址信息;取值為all返回地址信息、附近POI、道路以及道路交叉口信息 String result = null; try InputStream is = httpRequestToStream(url, requestMethod, params); byte b = new byteis.available(); is.read(b); result = new String(b); catch(IOException e) e.printStackTrace(); if (result != null) JSONObject jsonObject = J
26、SONObject.parseObject(result); String status_code = jsonObject.getString(statusCode); if (status_code = 000000) / 狀態(tài)碼為000000, 說明請求成功 System.out.println(請求成功: + jsonObject.getString(result); else / 狀態(tài)碼非000000, 說明請求失敗 System.out.println(請求失?。?+ jsonObject.getString(desc); else / 返回內(nèi)容異常,發(fā)送請求失敗,以下可根據(jù)業(yè)務(wù)邏
27、輯自行修改 System.out.println(發(fā)送請求失敗); 3.POI多邊形搜索package net.apishop.www.controller;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import .HttpURLConnection;import .MalformedURLException;import .URL;import .URLEncoder;impo
28、rt java.util.HashMap;import java.util.Map;import com.alibaba.fastjson.JSONObject;/* * httpUrlConnection訪問遠程接口工具 */public class Api /* * 方法體說明:向遠程接口發(fā)起請求,返回字節(jié)流類型結(jié)果 * param url 接口地址 * param requestMethod 請求方式 * param params 傳遞參數(shù) 重點:參數(shù)值需要用Base64進行轉(zhuǎn)碼 * return InputStream 返回結(jié)果 */ public static InputStream
29、 httpRequestToStream(String url, String requestMethod, Map params) InputStream is = null; try String parameters = ; boolean hasParams = false; / 將參數(shù)集合拼接成特定格式,如name=zhangsan&age=24 for (String key : params.keySet() String value = URLEncoder.encode(params.get(key), UTF-8); parameters += key + = + valu
30、e + &; hasParams = true; if (hasParams) parameters = parameters.substring(0, parameters.length() - 1); / 請求方式是否為get boolean isGet = get.equalsIgnoreCase(requestMethod); / 請求方式是否為post boolean isPost = post.equalsIgnoreCase(requestMethod); if (isGet) url += ? + parameters; URL u = new URL(url); HttpUR
31、LConnection conn = (HttpURLConnection) u.openConnection(); / 請求的參數(shù)類型(使用restlet框架時,為了兼容框架,必須設(shè)置Content-Type為“”空) conn.setRequestProperty(Content-Type, application/octet-stream); / conn.setRequestProperty(Content-Type, application/x-www-form-urlencoded); / 設(shè)置連接超時時間 conn.setConnectTimeout(50000); / 設(shè)置讀取
32、返回內(nèi)容超時時間 conn.setReadTimeout(50000); / 設(shè)置向HttpURLConnection對象中輸出,因為post方式將請求參數(shù)放在http正文內(nèi),因此需要設(shè)置為ture,默認(rèn)false if (isPost) conn.setDoOutput(true); / 設(shè)置從HttpURLConnection對象讀入,默認(rèn)為true conn.setDoInput(true); / 設(shè)置是否使用緩存,post方式不能使用緩存 if (isPost) conn.setUseCaches(false); / 設(shè)置請求方式,默認(rèn)為GET conn.setRequestMetho
33、d(requestMethod); / post方式需要將傳遞的參數(shù)輸出到conn對象中 if (isPost) DataOutputStream dos = new DataOutputStream(conn.getOutputStream(); dos.writeBytes(parameters); dos.flush(); dos.close(); / 從HttpURLConnection對象中讀取響應(yīng)的消息 / 執(zhí)行該語句時才正式發(fā)起請求 is = conn.getInputStream(); catch(UnsupportedEncodingException e) e.printS
34、tackTrace(); catch(MalformedURLException e) e.printStackTrace(); catch(IOException e) e.printStackTrace(); return is; public static void main(String args) String url = /common/postcode/getPostCodeByAddr; String requestMethod = POST; Map params = new HashMap(); params.put(polygon, ); /經(jīng)緯度坐標(biāo)對(規(guī)則:經(jīng)度和緯度用,分割,經(jīng)度在前,緯度在后,坐標(biāo)對用|分割。經(jīng)緯度小數(shù)點后不得超過6位。 多邊形為矩形時,可傳入左上右下兩頂點坐標(biāo)對;其他情況下首尾坐標(biāo)對需相同。) params.put(keyWords, ); /查詢關(guān)鍵字(規(guī)則: 多個關(guān)鍵字用“|”分割 若不指定city,并且搜索
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合作協(xié)議(五)-合同細則
- 空調(diào)購銷合作合同書
- 品牌商與供應(yīng)商采購合同范本
- 技術(shù)服務(wù)合同(實例)
- 詳解:威海房屋過戶合同辦理步驟
- 廢鋼采購及服務(wù)合同全文
- 醫(yī)療事故賠償合同協(xié)議書
- 度證券登記服務(wù)合同協(xié)議
- 雙方黨組織結(jié)對共建合同書
- 建筑試驗培訓(xùn)課件
- GB/T 19077-2024粒度分析激光衍射法
- 露天礦山開采施工組織方案
- 北京市西城區(qū)2022-2023學(xué)年高三上學(xué)期1月期末考試歷史試題 附答案
- 2024關(guān)于進一步提升基層應(yīng)急管理能力的意見學(xué)習(xí)解讀課件
- 《PLC應(yīng)用技術(shù)(西門子S7-1200)第二版》全套教學(xué)課件
- 單詞連連看答題闖關(guān)游戲課堂互動課件1
- 加強文物古籍保護利用(2022年廣東廣州中考語文試卷非連續(xù)性文本閱讀試題及答案)
- 2024小學(xué)數(shù)學(xué)義務(wù)教育新課程標(biāo)準(zhǔn)(2022版)必考題庫附含答案
- GB/T 44143-2024科技人才評價規(guī)范
- 羽毛球比賽對陣表模板
- 三級安全培訓(xùn)考試題附答案【滿分必刷】
評論
0/150
提交評論