自己实现的抓取网络信息

package util;

import java.io.IOException;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Date;
import java.util.UUID; import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.cookie.CookiePathComparator;
import org.apache.http.cookie.CookieSpec;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.http.HttpMethod; import BS; public class GetBsUtil { public static void main(String[] args) {
new GetBsUtil().getBsUtilByHttpClient("460","00","34860", "62041");
} public BS getBsUtilByHttpClient(String mcc , String mnc ,String lac,String cid){
CloseableHttpClient httpClient = HttpClients.createDefault();
String uri = "。。。。。。";
HttpGet httpGet = new HttpGet(uri);
CloseableHttpResponse httpResponse = null;
BS bs = new BS();
try {
httpGet.addHeader("Host", "。。。");
httpGet.addHeader("Accept", "*/*");
httpGet.addHeader("Accept-Encoding", "gzip,deflate,sdch");
httpGet.addHeader("Accept-Language", "zh-CN,zh;q=0.8");
httpGet.addHeader("Proxy-Connection", "keep-alive");
httpGet.addHeader("Referer", "。。。");
httpGet.addHeader("User-Agent", "。。。");
httpGet.addHeader("Cookie","。。。");
httpResponse = httpClient.execute(httpGet);
HttpEntity entity = httpResponse.getEntity();
if(null != entity){
String jsonEntity = EntityUtils.toString(entity);
System.out.println(jsonEntity);
jsonEntity = jsonEntity.substring(jsonEntity.indexOf("{") + 1, jsonEntity.length() - 2 );
String statusCode = "";
if(jsonEntity.contains("status")){
statusCode = jsonEntity.substring(jsonEntity.indexOf(":") + 2, jsonEntity.indexOf(",") - 1);
jsonEntity = jsonEntity.substring(jsonEntity.indexOf("{") + 1 , jsonEntity.indexOf("}") );
if("200".equals(statusCode)){
Field[] fields = bs.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
fields[i].setAccessible(true);
try {
if("lat".equals(fields[i].getName()) || "lng".equals(fields[i].getName())){
fields[i].set(bs, new BigDecimal(getSubDate(fields[i].getName(), jsonEntity).toString()));
}else if("lac".equals(fields[i].getName()) || "cid".equals(fields[i].getName())
|| "radius".equals(fields[i].getName()) || "rid".equals(fields[i].getName())){
fields[i].set(bs, getSubDate(fields[i].getName(), jsonEntity) != "" ? Integer.parseInt(getSubDate(fields[i].getName(), jsonEntity).toString()) : 0);
}else if("rids".equals(fields[i].getName())){
fields[i].set(bs, Long.parseLong(getSubDate(fields[i].getName(), jsonEntity).toString()));
}else if(!"createTime".equals(fields[i].getName())){
fields[i].set(bs, getSubDate(fields[i].getName(), jsonEntity));
}
} catch (Exception e) {
e.printStackTrace();
}
}
bs.setLac(Integer.parseInt(lac));
bs.setCid(Integer.parseInt(cid));
bs.setMcc(mcc);
bs.setMnc(mnc);
bs.setCreateTime(new Timestamp(new Date().getTime()));
bs.setId(UUID.randomUUID().toString());
System.out.println("bs:"+bs);
}
}
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(httpResponse != null) {
try {
EntityUtils.consume(httpResponse.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return bs;
} private static Object getSubDate(String attrName , String jsonOld){
if(jsonOld.contains(attrName)){
if(jsonOld.indexOf(attrName) > 1){
jsonOld = jsonOld.substring(jsonOld.indexOf(attrName) - 1);
}
jsonOld = jsonOld.substring(jsonOld.indexOf(attrName) + attrName.length() + 2, jsonOld.indexOf(",") > -1 ? jsonOld.indexOf(",") : jsonOld.length());
return jsonOld.contains("\"") ? jsonOld.substring(1, jsonOld.length() - 1) : jsonOld;
}
return "";
} }
  

  

实体类:

package pojo;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp; public class BS implements Serializable { private String id;
private String mcc;
private String mnc;
private Integer lac;
private Integer cid;
private BigDecimal lat;
private BigDecimal lng;
private Integer radius;
private Integer rid;
private Long rids;
private String address;
private String roads;
private Timestamp createTime; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getMcc() {
return mcc;
} public void setMcc(String mcc) {
this.mcc = mcc;
} public String getMnc() {
return mnc;
} public void setMnc(String mnc) {
this.mnc = mnc;
} public Integer getLac() {
return lac;
} public void setLac(Integer lac) {
this.lac = lac;
} public Integer getCid() {
return cid;
} public void setCid(Integer cid) {
this.cid = cid;
} public BigDecimal getLat() {
return lat;
} public void setLat(BigDecimal lat) {
this.lat = lat;
} public BigDecimal getLng() {
return lng;
} public void setLng(BigDecimal lng) {
this.lng = lng;
} public Integer getRadius() {
return radius;
} public void setRadius(Integer radius) {
this.radius = radius;
} public Integer getRid() {
return rid;
} public void setRid(Integer rid) {
this.rid = rid;
} public Long getRids() {
return rids;
} public void setRids(Long rids) {
this.rids = rids;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} public String getRoads() {
return roads;
} public void setRoads(String roads) {
this.roads = roads;
} public Timestamp getCreateTime() {
return createTime;
} public void setCreateTime(Timestamp createTime) {
this.createTime = createTime;
} @Override
public String toString() {
return "BS [id=" + id + ", mcc=" + mcc + ", mnc=" + mnc + ", lac="
+ lac + ", cid=" + cid + ", lat=" + lat + ", lng=" + lng
+ ", radius=" + radius + ", rid=" + rid + ", rids=" + rids
+ ", address=" + address + ", roads=" + roads + ", createTime="
+ createTime + "]";
} }

  

httpClient实现获取网络信息的更多相关文章

  1. 重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化

    [源码下载] 重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化 作者:webabcd 介绍重新想象 Windows 8 Store Apps ...

  2. 封装获取网络信息Linux—API类

    封装获取网络信息Linux—API类 封装好的库: #ifndef NETINFORMATION_H #define NETINFORMATION_H #include <netdb.h> ...

  3. 在C#中调用API获取网络信息和流量

    原文 在C#中调用API获取网络信息和流量 最近一项目中要求显示网络流量,而且必须使用C#. 事实上,调用 IpHlpApi.dll 的 GetIfTable API 可以轻易获得网络信息和网络流量. ...

  4. Android简易实战教程--第四十七话《使用OKhttp回调方式获取网络信息》

    在之前的小案例中写过一篇使用HttpUrlConnection获取网络数据的例子.在OKhttp盛行的时代,当然要学会怎么使用它,本篇就对其基本使用做一个介绍,然后再使用它的接口回调的方式获取相同的数 ...

  5. python 标准库获取网络信息

    c语言ioctl定义的常量 /usr/include/x86_64-linux-gnu/bits/ioctls.h /* Copyright (C) 1996-2015 Free Software F ...

  6. windows主机网络信息获取程序设计

    掌握windows系统获取网络信息的各种API函数的功能与调用方法,掌握设计程序显示获取到相关网络信息的方法,掌握网络字节数据与主机字节数据之间的转换.掌握这些API函数调用的错误处理方法. 利用本地 ...

  7. Perl获取主机名、用户、组、网络信息

    获取主机名.用户.组.网络信息相关函数 首先是获取主机名的方式,Perl提供了Sys::Hostname模块,可以查询当前的主机名: use Sys::Hostname; print hostname ...

  8. java使用siger 获取服务器硬件信息(CPU 内存 网络 io等)

    通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到j ...

  9. 8021x 获取IP信息失败,请检查锐捷认证客户端当前配置是否符合所在网络的要求,检查完毕后尝试重新认证

    早上一起床,登陆锐捷客户端上网,谁知道错问题了.不能联网了,锐捷登陆成功,但是一会儿就提示失败,获取IP信息失败了.下面我描述一下问题原因: 锐捷登陆后有认证提示,和往常正常情况一样的,不过有个小感叹 ...

随机推荐

  1. CSS3实战:让我们尽情的圆角吧

    如果说,WAP2.0网页的机型.浏览器适配给我们无线制作经理造成了巨大的心理 阴影,那么从iPhone.Android这些高端手机应用 起,我们终于可以庆幸比其他同行提 前迎来了一个新时代,这两种高端 ...

  2. PHP之序列化与反序列化讲解

    serialize() 把变量和它们的值编码成文本形式 unserialize() 恢复原先变量 eg: $stooges = array('Moe','Larry','Curly');$new = ...

  3. RadioGroup 的 RadioButton 选择改变字体颜色和背景颜色

    RadioGroup <RadioGroup android:id="@+id/client_charge_radiogroup" android:layout_width= ...

  4. Ubuntu 14.04 开启启动器图标最小化功能

    转自Ubuntu 14.04 怎样开启启动器图标最小化功能 前本站报道过 Ubuntu 14.04 终于加入了启动器图标最小化功能,这个功能默认是不开启的,要怎么开启呢? 之前报道的原文阅读:Ubun ...

  5. 不改变中间层,如何玩转 .NET 的远程处理功能?

    原文链接: https://msdn.microsoft.com/enus/library/aa289846(v=vs.71).aspx Visual Studio .NET 2003 该方案展示了传 ...

  6. RPM包制作最简单样例

    相关开发RPM的包要安装 Summary: the Firt RPM of Sky Name: hellow Version: 0.1 Release: Vendor: PA soft(aguncn@ ...

  7. [codility]tree_height

    http://codility.com/demo/take-sample-test/treeheight 非常非常简单的求树的深度.不忍直视. // you can also use includes ...

  8. leetcode面试准备:Triangle

    leetcode面试准备:Triangle 1 题目 Given a triangle, find the minimum path sum from top to bottom. Each step ...

  9. [Quick-x]制作新手引导高亮区域方法之一:混合模式

    demo下载:https://github.com/chenquanjun/Quick-x-HighlightArea 1.混合模式 (1)首先创建一个全屏的CCRenderTexture实例 这里使 ...

  10. Android 常用UI控件之TabHost(3)在4.0不显示图标的解决方案

    1,自定义 TabWidget 上每个tab的view 2,用多个图片