1. 程式人生 > >java 根據IP地址獲取地理位置

java 根據IP地址獲取地理位置

1. 第三方API

ps:下面引數ip:218.192.3.42 用於測試
淘寶API:http://ip.taobao.com/service/getIpInfo.php?ip=218.192.3.42
新浪API:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=218.192.3.42
pconline API:http://whois.pconline.com.cn/
百度API:http://api.map.baidu.com/location/ip?ip=218.192.3.42

2. 工具類

AddressUtils.java
  1. import java.io.BufferedReader;  
  2. import java.io.DataOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.InputStreamReader;  
  5. import java.io.UnsupportedEncodingException;  
  6. import java.net.HttpURLConnection;  
  7. import java.net.URL;  
  8. /** 
  9.  * 根據IP地址獲取詳細的地域資訊 
  10.  * 淘寶API : http://ip.taobao.com/service/getIpInfo.php?ip=218.192.3.42
     
  11.  * 新浪API : http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=218.192.3.42 
  12.  * @File AddressUtils.java 
  13.  * @Package org.gditc.weicommunity.util 
  14.  * @Description TODO 
  15.  * @Copyright Copyright © 2014 
  16.  * @Site https://github.com/Cryhelyxx 
  17.  * @Blog http://blog.csdn.net/Cryhelyxx 
  18.  * @Email [email protected]
     
  19.  * @Company GDITC 
  20.  * @Date 2014年11月6日 下午1:46:37 
  21.  * @author Cryhelyxx 
  22.  * @version 1.0 
  23.  */
  24. publicclass AddressUtils {  
  25.     /** 
  26.      *  
  27.      * @param content 
  28.      *            請求的引數 格式為:name=xxx&pwd=xxx 
  29.      * @param encoding 
  30.      *            伺服器端請求編碼。如GBK,UTF-8等 
  31.      * @return 
  32.      * @throws UnsupportedEncodingException 
  33.      */
  34.     publicstatic String getAddresses(String content, String encodingString)  
  35.             throws UnsupportedEncodingException {  
  36.         // 這裡呼叫淘寶API
  37.         String urlStr = "http://ip.taobao.com/service/getIpInfo.php";  
  38.         // 從http://whois.pconline.com.cn取得IP所在的省市區資訊
  39.         String returnStr = getResult(urlStr, content, encodingString);  
  40.         if (returnStr != null) {  
  41.             // 處理返回的省市區資訊
  42.             System.out.println("(1) unicode轉換成中文前的returnStr : " + returnStr);  
  43.             returnStr = decodeUnicode(returnStr);  
  44.             System.out.println("(2) unicode轉換成中文後的returnStr : " + returnStr);  
  45.             String[] temp = returnStr.split(",");  
  46.             if(temp.length<3){  
  47.                 return"0";//無效IP,區域網測試
  48.             }  
  49.             return returnStr;  
  50.         }  
  51.         returnnull;  
  52.     }  
  53.     /** 
  54.      * @param urlStr 
  55.      *            請求的地址 
  56.      * @param content 
  57.      *            請求的引數 格式為:name=xxx&pwd=xxx 
  58.      * @param encoding 
  59.      *            伺服器端請求編碼。如GBK,UTF-8等 
  60.      * @return 
  61.      */
  62.     privatestatic String getResult(String urlStr, String content, String encoding) {  
  63.         URL url = null;  
  64.         HttpURLConnection connection = null;  
  65.         try {  
  66.             url = new URL(urlStr);  
  67.             connection = (HttpURLConnection) url.openConnection();// 新建連線例項
  68.             connection.setConnectTimeout(2000);// 設定連線超時時間,單位毫秒
  69.             connection.setReadTimeout(2000);// 設定讀取資料超時時間,單位毫秒
  70.             connection.setDoOutput(true);// 是否開啟輸出流 true|false
  71.             connection.setDoInput(true);// 是否開啟輸入流true|false
  72.             connection.setRequestMethod("POST");// 提交方法POST|GET
  73.             connection.setUseCaches(false);// 是否快取true|false
  74.             connection.connect();// 開啟連線埠
  75.             DataOutputStream out = new DataOutputStream(connection  
  76.                     .getOutputStream());// 開啟輸出流往對端伺服器寫資料
  77.             out.writeBytes(content);// 寫資料,也就是提交你的表單 name=xxx&pwd=xxx
  78.             out.flush();// 重新整理
  79.             out.close();// 關閉輸出流
  80.             BufferedReader reader = new BufferedReader(new InputStreamReader(  
  81.                     connection.getInputStream(), encoding));// 往對端寫完資料對端伺服器返回資料
  82.             // ,以BufferedReader流來讀取
  83.             StringBuffer buffer = new StringBuffer();  
  84.             String line = "";  
  85.             while ((line = reader.readLine()) != null) {  
  86.                 buffer.append(line);  
  87.             }  
  88.             reader.close();  
  89.             return buffer.toString();  
  90.         } catch (IOException e) {  
  91.             e.printStackTrace();  
  92.         } finally {  
  93.             if (connection != null) {  
  94.                 connection.disconnect();// 關閉連線
  95.             }  
  96.         }  
  97.         returnnull;  
  98.     }  
  99.     /** 
  100.      * unicode 轉換成 中文 
  101.      *  
  102.      * @author fanhui 2007-3-15 
  103. 相關推薦

    java 根據IP地址獲取地理位置

    1. 第三方API ps:下面引數ip:218.192.3.42 用於測試 淘寶API:http://ip.taobao.com/service/getIpInfo.php?ip=218.192.3.42 新浪API:http://int.dpool.sina.

    java實現根據ip地址獲取地理位置

    記錄學習使用,轉載地址:http://www.jb51.net/article/54287.htm 程式呼叫了“騰訊ip分享計劃”提供的介面,當然也可以改成ip138提供的介面,不過這兩個網站返回的字串格式有些不同,要分別做解析。 public String getAdd

    根據ip地址獲取地理位置及座標

    根據ip獲取地理位置資訊,不用http和webservice介面,減少請求時間。我們可以利用了GeoLite2 庫,GeoLite2 資料庫是一個免費的 IP 地理定位資料庫,GeoLite2 Country 與 City 資料庫在每月的第一個週二更新。GeoLite2 AS

    java根據ip地址獲取詳細地域資訊

    網際網路有很多介面可以實現通過ip查詢到具體的位置,如下: 通過淘寶IP地址庫獲取IP位置 1. 請求介面(GET):http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串] 2. 響應資訊:(

    前端使用js根據ip地址獲取城市地理位置

                                      前端使用js根據ip地址獲取城市地理位置  

    Java 根據 IP 地址獲取 位置 -- 使用 ip2region

    首先在 maven 裡面引入 ip2region : <dependency> <groupId>org.lionsoul</groupId> <artifactId>ip2region</artifactId&

    Android 根據IP地址獲取城市

    manifest中要加的permission和activity_main.xml 參照上。 MainActivity.java package com.example.test; import java.util.List; import java.util.Loc

    根據ip地址獲取所在省市城市地區的真實地址/php函式

    /*獲取客戶端ip*/ function _get_ip(){ if (isset($_SERVER['HTTP_CLIENT_IP']) && strcasecmp($_SER

    PHP開發小技巧②③—根據ip地址獲取城市

            這個方法我們用的還是比較多的,便於收集資訊用於資料探勘分析。此方法不光根據ip地址進行獲取當前城市還可以根據http請求獲取使用者的城市位置。         實現方法:主要是根據高德地圖API進行獲取,首先註冊成為高德地圖使用者,然後認證成為開發者,建

    根據ip地址獲取城市

    <?php /** * Created by PhpStorm. * User: xym * Date: 2018/1/15 * Time: 下午1:57 */ function getIPLoc_sina($queryIP){ $url = 'http:/

    java 根據圖片地址獲取到圖片的大小,單位kb或者Mb

    /**       * byte(位元組)根據長度轉成kb(千位元組)和mb(兆位元組)       *        * @param bytes       * @return       */

    java 根據ip獲取地址

    try throw quest pin end china args 超時時間 con 用淘寶接口:(源碼:java 根據IP地址獲取地理位置) pom.xml: <!-- https://mvnrepository.com/artifact/net.sourcef

    Java根據HttpServletRequest請求獲取伺服器的IP地址

      以下總結了兩種根據HttpServletRequest請求獲取發出請求瀏覽器客戶端所在伺服器的IP地址方法: 程式碼: import javax.servlet.http.HttpServletRequest; /** * 根據HttpServletRequest請求獲取發出請求瀏覽器客戶端

    Java根據HttpServletRequest請求獲取服務器的IP地址

    client -i 根據 請求 代碼 brush clas get tip   以下總結了兩種根據HttpServletRequest請求獲取發出請求瀏覽器客戶端所在服務器的IP地址方法: 代碼: import javax.servlet.http.HttpServlet

    根據ip地址和子網掩碼獲取廣播地址java實現

    /** * 獲取廣播地址 * */ public static String getBroadcastAddress(String subnet, String ip) { String[] ips = ip.split("\\."); String[]

    基於HTML5的Geolocation獲取地理位置,配合Google Map API反向地址解析(獲取用戶真實地址

    add current 經緯度 cati arr offset 類型 html maps 基於HTML5的Geolocation獲取地理位置,配合Google Map API反向地址解析(獲取用戶真實地址) html 1 <!DOCTYPE html>

    Java根據IP獲取國家省級地市信息

    object ringbuf from rgs buffere while except pro open package com.ust.map; import java.io.BufferedReader;import java.io.IOException;impor

    jquery 獲取客戶端ip地址 和 地區位置

    搜狐IP地址查詢介面(預設GBK):http://pv.sohu.com/cityjson 搜狐IP地址查詢介面(可設定編碼):http://pv.sohu.com/cityjson?ie=utf-8 使用搜狐介面demo: <p id="ip"></p> <

    根據百度地圖的api自動獲取地理位置

    功能:根據百度地圖的api 版本:php版本 步驟1:獲取地理位置資訊 function get_city($ip){ $url = "http://api.map.baidu.com/location/ip?ak=CKbKvNu2m9SaYuWQgk4zn

    獲取經緯度&根據經緯度獲取地理位置

    package com.example.ceshi; import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.location