httpClient实现获取网络信息
自己实现的抓取网络信息
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实现获取网络信息的更多相关文章
- 重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化
[源码下载] 重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化 作者:webabcd 介绍重新想象 Windows 8 Store Apps ...
- 封装获取网络信息Linux—API类
封装获取网络信息Linux—API类 封装好的库: #ifndef NETINFORMATION_H #define NETINFORMATION_H #include <netdb.h> ...
- 在C#中调用API获取网络信息和流量
原文 在C#中调用API获取网络信息和流量 最近一项目中要求显示网络流量,而且必须使用C#. 事实上,调用 IpHlpApi.dll 的 GetIfTable API 可以轻易获得网络信息和网络流量. ...
- Android简易实战教程--第四十七话《使用OKhttp回调方式获取网络信息》
在之前的小案例中写过一篇使用HttpUrlConnection获取网络数据的例子.在OKhttp盛行的时代,当然要学会怎么使用它,本篇就对其基本使用做一个介绍,然后再使用它的接口回调的方式获取相同的数 ...
- python 标准库获取网络信息
c语言ioctl定义的常量 /usr/include/x86_64-linux-gnu/bits/ioctls.h /* Copyright (C) 1996-2015 Free Software F ...
- windows主机网络信息获取程序设计
掌握windows系统获取网络信息的各种API函数的功能与调用方法,掌握设计程序显示获取到相关网络信息的方法,掌握网络字节数据与主机字节数据之间的转换.掌握这些API函数调用的错误处理方法. 利用本地 ...
- Perl获取主机名、用户、组、网络信息
获取主机名.用户.组.网络信息相关函数 首先是获取主机名的方式,Perl提供了Sys::Hostname模块,可以查询当前的主机名: use Sys::Hostname; print hostname ...
- java使用siger 获取服务器硬件信息(CPU 内存 网络 io等)
通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到j ...
- 8021x 获取IP信息失败,请检查锐捷认证客户端当前配置是否符合所在网络的要求,检查完毕后尝试重新认证
早上一起床,登陆锐捷客户端上网,谁知道错问题了.不能联网了,锐捷登陆成功,但是一会儿就提示失败,获取IP信息失败了.下面我描述一下问题原因: 锐捷登陆后有认证提示,和往常正常情况一样的,不过有个小感叹 ...
随机推荐
- 在C#中关于excel的导入和导出操作
一.先来看看最常见的导入操作吧! private void Import() { //打开excel选择框 OpenFileDialog frm = new OpenFileDialog(); frm ...
- BZOJ 4004 [JLOI 2015] 装备购买 解题报告
哎这个题 WA 了无数遍...果然人太弱... 首先我们把这些装备按照花费从小到大排序,然后依次考虑是否能买这个装备. 至于这样为什么是对的,好像有一个叫拟阵的东西可以证明,然而我不会.TATQAQ ...
- POJ2201+RMQ
/* RMQ */ #include<stdio.h> #include<string.h> #include<stdlib.h> #include<algo ...
- SQLite入门与分析(九)---VACUUM命令分析
VACUUM命令是SQLite的一个扩展功能,模仿PostgreSQL中的相同命令而来.若调用VACUUM带一个表名或索引名, 则将整理该表或索引.在SQLite 1.0中,VACUUM命令调用 gd ...
- 接口 --- Java
package com.test2; public class Test { public static void main(String[] args) { // TODO Auto-generat ...
- 添加service到SystemService硬件服务
添加service到SystemService: 添加硬件服务. 创建时间:2015年3月9日(星期一) 晚上11:07 | 分类:硬件驱动Android | 天气: 修改时间:2015年3月10日( ...
- IPv6 tutorial – Part 8: Special addresses
https://4sysops.com/archives/ipv6-tutorial-part-8-special-addresses/ The special IPv6 addresses disc ...
- Nagios Core/Icinga 基于栈的缓冲区溢出漏洞
漏洞名称: Nagios Core/Icinga 基于栈的缓冲区溢出漏洞 CNNVD编号: CNNVD-201402-484 发布时间: 2014-03-03 更新时间: 2014-03-03 危害等 ...
- PHP 'ext/gd/gd.c' gdImageCrop空指针返回拒绝服务漏洞
漏洞版本: PHP 5.5.x 漏洞描述: CVE ID:CVE-2013-7327 PHP是一种HTML内嵌式的语言. PHP 'ext/gd/gd.c' gdImageCrop函数没有检查返回值, ...
- MVC 路由规则
一.路由规则说明 先来看MVC中的默认路由的说明 "{controller}/{action}/{id}", // URL with parameters 对于Url /Home/ ...