eoLinker-API_Shop_POI檢索_API接口_Java調(diào)用示例代碼_第1頁
eoLinker-API_Shop_POI檢索_API接口_Java調(diào)用示例代碼_第2頁
eoLinker-API_Shop_POI檢索_API接口_Java調(diào)用示例代碼_第3頁
eoLinker-API_Shop_POI檢索_API接口_Java調(diào)用示例代碼_第4頁
eoLinker-API_Shop_POI檢索_API接口_Java調(diào)用示例代碼_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、eoLinker-API Shop POI檢索 Java調(diào)用示例代碼POI檢索通過關(guān)鍵詞查詢在某個(gè)地區(qū)的POI信息,支持市級(jí)、區(qū)縣級(jí)查詢:比如在廣州查詢“銀行”,接口將會(huì)輸出所有銀行的地理信息列表。該產(chǎn)品擁有以下APIs:1. POI搜索2. 周邊POI搜索3. POI多邊形搜索注意,該示例代碼僅適用于 網(wǎng)站下API 使用該產(chǎn)品前,您需要通過 /#/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.alibab

3、a.fastjson.JSONObject;/* * httpUrlConnection訪問遠(yuǎn)程接口工具 */public class Api /* * 方法體說明:向遠(yuǎn)程接口發(fā)起請求,返回字節(jié)流類型結(jié)果 * param url 接口地址 * param requestMethod 請求方式 * param params 傳遞參數(shù) 重點(diǎn):參數(shù)值需要用Base64進(jìn)行轉(zhuǎn)碼 * return InputStream 返回結(jié)果 */ public static InputStream httpRequestToStream(String url, String requestMethod, Map

4、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 + = + value + &; hasParams = true; if (hasParams) parameters = parame

5、ters.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); HttpURLConnection conn = (HttpURLConnection) u.openConnection();

6、/ 請求的參數(shù)類型(使用restlet框架時(shí),為了兼容框架,必須設(shè)置Content-Type為“”空) conn.setRequestProperty(Content-Type, application/octet-stream); / conn.setRequestProperty(Content-Type, application/x-www-form-urlencoded); / 設(shè)置連接超時(shí)時(shí)間 conn.setConnectTimeout(50000); / 設(shè)置讀取返回內(nèi)容超時(shí)時(shí)間 conn.setReadTimeout(50000); / 設(shè)置向HttpURLConnection

7、對象中輸出,因?yàn)閜ost方式將請求參數(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.setRequestMethod(requestMethod); / post方式需要將傳遞的參數(shù)輸出到conn對象中 if (isPost) Da

8、taOutputStream dos = new DataOutputStream(conn.getOutputStream(); dos.writeBytes(parameters); dos.flush(); dos.close(); / 從HttpURLConnection對象中讀取響應(yīng)的消息 / 執(zhí)行該語句時(shí)才正式發(fā)起請求 is = conn.getInputStream(); catch(UnsupportedEncodingException e) e.printStackTrace(); catch(MalformedURLException e) e.printStackTra

9、ce(); 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(keyWords, ); /查詢關(guān)鍵字(規(guī)則: 多個(gè)關(guān)鍵字用“|”分割 若不指定city,并且搜索的為泛詞(例如“美食”)的情況下

10、,返回的內(nèi)容為城市列表以及此城市內(nèi)有多少結(jié)果符合要求。) params.put(types, ); /查詢POI類型(多個(gè)類型用“|”分割; 可選值:分類代碼 或 漢字(若用漢字,請嚴(yán)格按照附件之中的漢字填寫) 分類代碼由六位數(shù)字組成,一共分為三個(gè)部分,前兩個(gè)數(shù)字代表大類;中間兩個(gè)數(shù)字代表中類;最后兩個(gè)數(shù)字代表小類。 若指定了某個(gè)大類,則所屬的中類、小類都會(huì)被顯示。 例如:010000為汽車服務(wù)(大類) 010100為加油站(中類) 010101為中國石化(小類) 010900為汽車租賃(中類) ) params.put(city, ); /查詢城市(可選值:城市中文、中文全拼 如:北京/be

11、ijing 填入此參數(shù)后,會(huì)盡量優(yōu)先返回此城市數(shù)據(jù),但是不一定僅局限此城市結(jié)果,若僅需要某個(gè)城市數(shù)據(jù)請調(diào)用citylimit參數(shù)。 如:在深圳市搜天安門,返回北京天安門結(jié)果。) params.put(cityLimit, ); /僅返回指定城市數(shù)據(jù)(可選值:true/false) params.put(children, ); /是否按照層級(jí)展示子POI數(shù)據(jù)(可選值:children=1) params.put(offset, ); /每頁記錄數(shù)據(jù)(強(qiáng)烈建議不超過25,若超過25可能造成訪問報(bào)錯(cuò)) params.put(page, ); /當(dāng)前頁數(shù)(最大翻頁數(shù)100) params.put(b

12、uilding, ); /建筑物的POI編號(hào)(傳入建筑物POI編號(hào)之后,則只在該建筑物之內(nèi)進(jìn)行搜索) params.put(floor, ); /搜索樓層(若傳入 建筑物的POI編號(hào) + 樓層 ,則返回該建筑物內(nèi)當(dāng)前樓層的關(guān)鍵字搜索結(jié)果 若只傳入樓層,則返回參數(shù)不完全的提示 若傳入建筑物的POI編號(hào) + 樓層,該樓層沒有對應(yīng)的搜索結(jié)果,則會(huì)返回建筑物之內(nèi)的內(nèi)容。) params.put(extensions, ); /此項(xiàng)默認(rèn)返回基本地址信息;取值為all返回地址信息、附近POI、道路以及道路交叉口信息 String result = null; try InputStream is = ht

13、tpRequestToStream(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 = JSONObject.parseObject(result); String status_code = jsonObject.getString(statusCode); if (status_

14、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ù)邏輯自行修改 System.out.println(發(fā)送請求失敗); 2.周邊POI搜索package net.apishop.www.controller;import java.io.Data

15、OutputStream;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.fastj

16、son.JSONObject;/* * httpUrlConnection訪問遠(yuǎn)程接口工具 */public class Api /* * 方法體說明:向遠(yuǎn)程接口發(fā)起請求,返回字節(jié)流類型結(jié)果 * param url 接口地址 * param requestMethod 請求方式 * param params 傳遞參數(shù) 重點(diǎn):參數(shù)值需要用Base64進(jìn)行轉(zhuǎn)碼 * return InputStream 返回結(jié)果 */ public static InputStream httpRequestToStream(String url, String requestMethod, Map params)

17、 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 + = + value + &; hasParams = true; if (hasParams) parameters = parameters.su

18、bstring(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); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); / 請求的參數(shù)

19、類型(使用restlet框架時(shí),為了兼容框架,必須設(shè)置Content-Type為“”空) conn.setRequestProperty(Content-Type, application/octet-stream); / conn.setRequestProperty(Content-Type, application/x-www-form-urlencoded); / 設(shè)置連接超時(shí)時(shí)間 conn.setConnectTimeout(50000); / 設(shè)置讀取返回內(nèi)容超時(shí)時(shí)間 conn.setReadTimeout(50000); / 設(shè)置向HttpURLConnection對象中輸出,因

20、為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.setRequestMethod(requestMethod); / post方式需要將傳遞的參數(shù)輸出到conn對象中 if (isPost) DataOutpu

21、tStream dos = new DataOutputStream(conn.getOutputStream(); dos.writeBytes(parameters); dos.flush(); dos.close(); / 從HttpURLConnection對象中讀取響應(yīng)的消息 / 執(zhí)行該語句時(shí)才正式發(fā)起請求 is = conn.getInputStream(); catch(UnsupportedEncodingException e) e.printStackTrace(); catch(MalformedURLException e) e.printStackTrace(); c

22、atch(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(location, ); /中心點(diǎn)坐標(biāo)(規(guī)則: 經(jīng)度和緯度用,分割,經(jīng)度在前,緯度在后,經(jīng)緯度小數(shù)點(diǎn)后不得超過6位) params.put(ke

23、yWords, ); /查詢關(guān)鍵字(規(guī)則: 多個(gè)關(guān)鍵字用“|”分割 若不指定city,并且搜索的為泛詞(例如“美食”)的情況下,返回的內(nèi)容為城市列表以及此城市內(nèi)有多少結(jié)果符合要求。) params.put(types, ); /查詢POI類型(多個(gè)類型用“|”分割; 可選值:分類代碼 或 漢字(若用漢字,請嚴(yán)格按照附件之中的漢字填寫) 分類代碼由六位數(shù)字組成,一共分為三個(gè)部分,前兩個(gè)數(shù)字代表大類;中間兩個(gè)數(shù)字代表中類;最后兩個(gè)數(shù)字代表小類。 若指定了某個(gè)大類,則所屬的中類、小類都會(huì)被顯示。 例如:010000為汽車服務(wù)(大類) 010100為加油站(中類) 010101為中國石化(小類) 01

24、0900為汽車租賃(中類) ) params.put(city, ); /查詢城市(可選值:城市中文、中文全拼 如:北京/beijing 填入此參數(shù)后,會(huì)盡量優(yōu)先返回此城市數(shù)據(jù),但是不一定僅局限此城市結(jié)果,若僅需要某個(gè)城市數(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) par

25、ams.put(offset, ); /每頁記錄數(shù)據(jù)(強(qiáng)烈建議不超過25,若超過25可能造成訪問報(bào)錯(cuò)) params.put(page, ); /當(dāng)前頁數(shù)(最大翻頁數(shù)100) params.put(extensions, ); /此項(xiàng)默認(rèn)返回基本地址信息;取值為all返回地址信息、附近POI、道路以及道路交叉口信息 String result = null; try InputStream is = httpRequestToStream(url, requestMethod, params); byte b = new byteis.available(); is.read(b); resu

26、lt = 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.println(請求成功: + jsonObject.getString(result); els

27、e / 狀態(tài)碼非000000, 說明請求失敗 System.out.println(請求失?。?+ jsonObject.getString(desc); else / 返回內(nèi)容異常,發(fā)送請求失敗,以下可根據(jù)業(yè)務(wù)邏輯自行修改 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.UnsupportedEn

28、codingException;import .HttpURLConnection;import .MalformedURLException;import .URL;import .URLEncoder;import java.util.HashMap;import java.util.Map;import com.alibaba.fastjson.JSONObject;/* * httpUrlConnection訪問遠(yuǎn)程接口工具 */public class Api /* * 方法體說明:向遠(yuǎn)程接口發(fā)起請求,返回字節(jié)流類型結(jié)果

29、 * param url 接口地址 * param requestMethod 請求方式 * param params 傳遞參數(shù) 重點(diǎn):參數(shù)值需要用Base64進(jìn)行轉(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ù)集合拼接成特定格式,如na

30、me=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.equalsIgnoreCase(requestM

31、ethod); / 請求方式是否為post boolean isPost = post.equalsIgnoreCase(requestMethod); if (isGet) url += ? + parameters; URL u = new URL(url); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); / 請求的參數(shù)類型(使用restlet框架時(shí),為了兼容框架,必須設(shè)置Content-Type為“”空) conn.setRequestProperty(Content-Type, application/

32、octet-stream); / conn.setRequestProperty(Content-Type, application/x-www-form-urlencoded); / 設(shè)置連接超時(shí)時(shí)間 conn.setConnectTimeout(50000); / 設(shè)置讀取返回內(nèi)容超時(shí)時(shí)間 conn.setReadTimeout(50000); / 設(shè)置向HttpURLConnection對象中輸出,因?yàn)閜ost方式將請求參數(shù)放在http正文內(nèi),因此需要設(shè)置為ture,默認(rèn)false if (isPost) conn.setDoOutput(true); / 設(shè)置從HttpURLConne

33、ction對象讀入,默認(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); dos.flus

34、h(); dos.close(); / 從HttpURLConnection對象中讀取響應(yīng)的消息 / 執(zhí)行該語句時(shí)才正式發(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 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ù)點(diǎn)后不得超過6位。 多邊形為矩形時(shí),可傳入左上右下兩頂點(diǎn)坐標(biāo)對;其他情況下首尾坐標(biāo)對需相同。) params.put(keyWords, ); /查詢關(guān)鍵字(規(guī)則: 多個(gè)關(guān)鍵字用“|”分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論