httpClient实现获取网络信息

时间:2022-03-12 04:54:14

自己实现的抓取网络信息

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 + "]";
} }