
net.sf.weixinmp.thirdparty.IPAddressService Maven / Gradle / Ivy
The newest version!
package net.sf.weixinmp.thirdparty;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import net.sf.weixinmp.thirdparty.model.IP;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.json.JSONObject;
/**
* 查询IP地址归属地的服务 http://whois.pconline.com.cn/
* 接口列表:
*
- (1)ip.jsp
- (2)ipJson.jsp
- (3)jsAlert.jsp
- (4)jsDom.jsp
- (5)jsFunction.jsp
- (6)jsLabel.jsp
- (7)jsWrite.jsp
- (8)whois/index.jsp
接口参数:
@param ip:可指定IP地址,不指定则取request.getRemoteAddr()的值。
支持以下格式:
- (a)202.96.159.254
- (b)202.096.159.254
- (c)202.96.159.254/192.168.20.106 (适用于接口1-8)
@param rep:可指定活动页代码,输出的结果会按系统设置映射到相应的地区 (适用于接口1-8)
@param level:可指定输出结果的精度,=1/=2/=3分别代表只输出省名称/输出省市名称/输出省市区名称 (适用于接口1-8)
@param siteId:可指定网站或应用代码,输出IP所属的区域 (适用于接口2,5. siteId与rep原则上是互斥的)
@param callback:指定回调函数的名称, 不指定则默认为'IPCallBack' (适用于接口2,5)
@param domId:指定结点ID (适用于接口4, 必须指定)
@param id:指定结点ID (适用于接口6, 必须指定)
* @author Mao, Anping
*
*/
public class IPAddressService extends AbstractHttpService{
public static final String IP_QUERY_URL="http://whois.pconline.com.cn/ipJson.jsp";
@Override
protected void configureHttpClient() {
httpClient = new HttpClient();
method = new GetMethod(IP_QUERY_URL);
}
/**
*
*/
public IP onSuccess() throws HttpException, IOException {
//数据demo if(window.AA) {AA({"ip":"115.199.97.37","pro":"浙江省","city":"杭州市","region":"","addr":"浙江省杭州市","regionNames":""});}
String content=method.getResponseBodyAsString();
String jsonData=content.substring(content.indexOf("{", content.indexOf("{")+1)/*左起第二个话括弧*/, content.indexOf("}")+1/*第一个反括号结束*/);
JSONObject jsonObject=new JSONObject(jsonData);
IP ip=new IP();
ip.setIp(jsonObject.getString("ip"));
ip.setAddr(jsonObject.getString("addr"));
ip.setCity(jsonObject.getString("city"));
ip.setPro(jsonObject.getString("pro"));
ip.setRegion(jsonObject.getString("region"));
ip.setRegionNames(jsonObject.getString("regionNames"));
return ip;
//反射效率太低
//return (IP)JSONObject.toBean(jsonObject, IP.class);
}
public IP lookup(String ip) throws IOException{
Map params=new HashMap();
params.put("ip", ip);
return this.execute(params);
}
public IP onFailure() throws HttpException, IOException {
return null;
}
public static void main(String[] args) throws IOException {
IPAddressService service=new IPAddressService();
System.out.println(service.lookup("60.176.171.139"));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy