快速入门
重要类介绍:com.alibaba.sec.domain.FastGeoConf 目前有如下字段,分别是:properties:用户自定加载的字段,不填写则加载所有字段,在使用时可选择性加载其中需要的属性,这样能显著降低内存的占用空间。具体字段含义参考下文附件
licenseFilePath:license路径
dataFilePath: data数据路径
以下功能需要1.0.4版本支持licenseBytes license字节数组
dataBytes data字节数组
licenseInput license字节流
dataInput data字节流
filterEmptyValue 用于控制查询结果是否返回内容为空的字段( 默认不启用此功能)
注意
properties与filterEmptyValue()区别,properties设置返回的字段,无论是否为空值,filterEmptyValue启用后字段为空值时,不在结果集中显示该空值字段。
com.alibaba.sec.client.FastIPGeoClient 是用户使用SDK的客户端对象,需要通过构造函数实例化
使用方法:将加载字段、license文件路径、数据文件路径封装成一个 com.alibaba.sec.domain.FastGeoConf
通过静态方法获取单例(能保证在数据文件和license文件路径一样的情况下的实例只会在内存里面生成一份)com.alibaba.sec.client.FastIPGeoClient.getSingleton(com.alibaba.sec.domain.FastGeoConf)
通过 FastIPGeoClient.search(String ip) 方法来检索ip的地址位置等相关信息,返回的数据为json格式,键值对都是 FastGeoConf.properties 里指定的字段(若未指定,则加载所有字段。在明确实际要用到字段的情况下,生产环境建议固定字段,避免因为新数据字段增加导致内存占用增加),值不在时用空字符串 "" 代替。
在使用时需要显式的捕获异常:LicenseException,FastIPGeoException,根据异常的编码做相应处理,具体异常列表参考下文附件。
调用实例:import com.alibaba.sec.client.FastIPGeoClient;
import com.alibaba.sec.domain.FastGeoConf;
import com.alibaba.sec.exception.FastIPGeoException;
import com.alibaba.sec.license.exception.LicenseException;
import java.util.Arrays;
import java.util.HashSet;
public class GeoClientTest {
private static final String DATA_FILE_PATH = "${path}/ipv4.dex";
private static final String LICENSE_FILE_PATH = "${path}/license.lic";
public static void main(String[] args) throws Exception {
FastGeoConf geoConf = new FastGeoConf();
geoConf.setDataFilePath(DATA_FILE_PATH);
geoConf.setLicenseFilePath(LICENSE_FILE_PATH);
//指定sdk返回字段,不指定字段默认返回全部,可节省内存开销
HashSet set = new HashSet<>(Arrays.asList(
"country", "province", "province_code",
"city", "city_code", "county", "county_code",
"isp", "isp_code", "routes",
"longitude", "latitude"
));
geoConf.setProperties(set);
geoConf.filterEmptyValue(); //空值字段,不在结果中返回
//通过构造方法初始化(非单例,旧版SDK中使用)
//FastIPGeoClient fastIpGeoClient = new FastIPGeoClient(geoConf);
//通过静态方法(单例), 推荐使用该方法,sdk需升级到最新版本
FastIPGeoClient fastIpGeoClient = FastIPGeoClient.getSingleton(geoConf);
String result;
try {
result = fastIpGeoClient.search("221.206.131.10");
System.out.println(result);
} catch (LicenseException e) {
e.printStackTrace();
} catch (FastIPGeoException e) {
e.printStackTrace();
}
}
}