import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class AddressUtils {
/**
*
* @param content
* 请求的参数 格式为:name=xxx&pwd=xxx
* @param encoding
* 服务器端请求编码。如GBK,UTF-8等
* @return
*/
public String getAddresses(String content, String encodingString) {
// 这里调用pconline的接口
String urlStr = "http://whois.pconline.sscom.cn/ipJson.jsp";
// 从http://whois.pconline.com.cn取得IP所在的省市区信息
String returnStr = this.getResult(urlStr, content, encodingString);
if (returnStr != null) {
// 处理返回的省市区信息
int startIndex = returnStr.indexOf("\"pro");
int endIndex = returnStr.indexOf(",\"addr");
if (startIndex > 0 && endIndex > 0 && endIndex > startIndex) {
returnStr = returnStr.substring(startIndex, endIndex);
returnStr = returnStr.replaceAll("\"", "").replace("pro:", "")
.replace("city:", "").replace("region:", "");
}
}
return returnStr;
}
/**
* @param urlStr
* 请求的地址
* @param content
* 请求的参数 格式为:name=xxx&pwd=xxx
* @param encoding
* 服务器端请求编码。如GBK,UTF-8等
* @return
*/
private String getResult(String urlStr, String content, String encoding) {
URL url = null;
HttpURLConnection connection = null;
try {
url = new URL(urlStr);
connection = (HttpURLConnection) url.openConnection();// 新建连接实例
connection.setConnectTimeout(2000);// 设置连接超时时间,单位毫秒
connection.setReadTimeout(2000);// 设置读取数据超时时间,单位毫秒
connection.setDoOutput(true);// 是否打开输出流 true|false
connection.setDoInput(true);// 是否打开输入流true|false
connection.setRequestMethod("POST");// 提交方法POST|GET
connection.setUseCaches(false);// 是否缓存true|false
connection.connect();// 打开连接端口
DataOutputStream out = new DataOutputStream(connection
.getOutputStream());// 打开输出流往对端服务器写数据
out.writeBytes(content);// 写数据,也就是提交你的表单 name=xxx&pwd=xxx
out.flush();// 刷新
out.close();// 关闭输出流
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream(), encoding));// 往对端写完数据对端服务器返回数据
// ,以BufferedReader流来读取
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
reader.close();
return buffer.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();// 关闭连接
}
}
return null;
}
// 测试
public static void main(String[] args) {
AddressUtils addressUtils = new AddressUtils();
// 测试ip
String ip = "219.136.134.157";
String address = addressUtils.getAddresses("ip=" + ip, "gbk");
System.out.println(address);
// 输出结果为:广东省,广州市,越秀区
}
}
分享到:
相关推荐
本篇文章将深入探讨如何在ThinkPHP5中利用IP地址获取定位至城市的地理信息。 首先,我们要明白IP地址与地理位置的关系。Internet上的每个设备都有一个唯一的IP地址,这些地址按照一定的规则被分配给各个网络和主机...
在互联网应用开发中,经常需要通过用户的IP地址来确定其地理位置信息,比如所在省份和城市等。这对于广告定位、用户行为分析、内容推荐等方面有着重要的作用。本文将详细介绍如何使用C#语言在.NET框架下实现这一功能...
3. **区间查找**:由于IP地址是连续的,我们可以使用二分查找法来快速定位IP地址所在的省市区信息。先将数据库数据按IP地址升序排序,然后在查找时不断缩小范围,直到找到匹配的IP地址区间。 4. **数据封装**:为了...
在PHP编程中,获取用户设备的IP地址是...总的来说,通过学习和使用这个实例,你可以掌握如何在PHP中获取用户的IP地址,以及如何利用外部API获取基于IP的地理位置信息,这对于网站统计、个性化推荐等功能具有重要意义。
在这个场景中,我们关注的是如何利用PHP根据IP地址获取用户所在的城市代码,这在诸如网站访问统计、地理位置定位等服务中非常常见。这个过程涉及到TCP/IP协议、网络编程和数据库查询等知识。 首先,TCP/IP协议是...
在本场景中,我们关注的是如何根据经纬度坐标来获取对应的省市区信息。这涉及到地理编码(Geocoding)的过程,即通过经纬度坐标反向查找其对应的行政区域信息。 首先,我们需要理解经纬度坐标。地球被划分为经度和...
标题中的“php通过ip免申请api获取所在城市的代码”指的是使用PHP编程语言,不通过申请特定API密钥,而是利用公开或免费的IP查询服务来获取访客IP地址所在的地理位置,特别是城市信息。这种技术在网站统计、用户定位...
这是一款非常简单实用的jQuery+Ajax获取当前IP地址和省市地区位置代码,调用ajax函数获取IP地址和所在省份城市。
根据现有IP地址获取其地理位置(省份,城市等)的方法 function GetIpLookup($ip = ''){ if(empty($ip)){ return '请输入IP地址'; } $res = @file_get_contents('...
// 根据IP地址获取城市 function ipCity($userip) { // IP数据库路径 $dat_path = 'QQWry.dat'; // 检查IP地址格式是否有效 if (!preg_match("/^([0-9]{1,3}\.){3}[0-9]{1,3}$/", $userip)) { return '...
这段代码会加载GeoLite2数据库,并根据给定的IP地址获取对应的国家和城市信息。 接下来是身份证(ID Card)查询。在中国,身份证号码包含了持卡人的出生日期、性别以及籍贯信息。虽然我们不能直接通过身份证号码...
本文实例讲述了THinkPHP获取客户端IP与IP地址查询的方法。分享给大家供大家参考,具体如下: TP 中获取客户端IP地址的系统公共函数是:function get_client_ip()。返回值就是IP地址。 查询IP地址所在国家与地区的类...
使用这个数据库,我们可以快速地根据输入的IP地址获取到相对应的省市区等信息。 在Java中,实现这一功能需要以下几个步骤: 1. **数据准备**:首先,你需要下载最新的“QQ纯真”IP数据库文件,通常是一个CSV或者...
在ASP.NET开发中,有时我们需要根据用户的IP地址获取其所在的省份和城市信息,这在诸如统计用户分布、个性化推荐或者安全验证等场景中非常常见。本压缩包"ASP.NET-[其他类别]Asp.net根据IP显示省市拼音.zip"提供了一...
3. **IP转省市区**:除了城市级别,该系统还支持查询到更细致的省市区信息。这使得开发者能够更加精确地了解到用户所在的行政区域,对于提供地方性服务或实施地域性营销策略具有重要意义。 4. **IP转拼音**:一个...
总结起来,通过PHP实现根据IP地址判断用户所在城市并进行城市切换或跳转的基本步骤包括:获取用户IP地址、使用IP地址库文件解析用户所在IP段、获取对应的城市信息,以及根据城市信息执行相应的业务逻辑。需要注意的...
1. **网络定位**:根据用户的IP地址,实时显示其所在的城市,提升用户体验。 2. **广告定向**:结合用户位置信息,推送与地域相关的广告,提高广告效果。 3. **内容过滤**:根据IP地址判断访问者的来源,实施特定的...
在IT行业中,"省市区三级联动"是一种常见的前端交互设计,尤其在地址选择、物流配送、定位服务等场景中广泛运用。它指的是在一个下拉菜单中,用户...而获取IP所在省份的API则为这一过程提供了便捷,让服务更加智能化。
在IT行业中,尤其是在Web开发领域,常常需要处理与地理位置相关的数据,例如用户的IP地址和所在省市信息。这个压缩包提供了一个特别适用于JavaScript环境的IP地址与省市编码库,它以JSON格式存储数据,体积小巧,...
例如,在Java中,我们可以创建`BinarySearcher`对象,然后调用`search`方法输入IP地址,返回的结果会包含IP所在的省市区信息。 4. **离线特性** IP2Region的一大优点是离线查询,这意味着无需连接互联网就可以进行...