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 com.renmaiweb.lbs.pojo.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 + "]";
	}

}

  

时间: 2024-08-01 03:52:21

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

借助Sigar API获取网络信息

Sigar(全称System Information Gatherer And Reporter,即系统信息收集报表器),它提供了一个开源的跨平台的收集计算机硬件和操作系统信息的API(该API底层接口用C语言编写),本文将演示如何借助Sigar API获取网络信息: package com.ghj.packageoftest; import org.hyperic.sigar.NetFlags; import org.hyperic.sigar.NetInterfaceConfig; impo

Delphi For Android 使用Posix函数获取网络信息(MAC, IP...)

安卓中获取系统当前活动的网卡MAC地址和IP地址时,需要使用到java.net.networkinterface库,在Delphi中虽然可以调用java库, 但是如果没有现成的java库(jar.class等),也会比较麻烦,这里使用posix函数实现获取MAC和IP地址,不需要root权限, 但理论上应该需要设置查询网络状态和WIFI状态权限: <!-- 获取网络状态的权限 --> <uses-permission android:name="android.permissi

android获取手机信息

android系统的很多信息可以通过 /proc 目录下获得,如 cat  /proc/cpuinfo                       获取cpu信息 cat /proc/meminfo                      获取内存信息 这些信息以文本格式保存,可以通过IO流读取,比较简单,在这里考虑到一些内容并不是以文本方式保存,磁盘信息 我们通过代码实现一个linux指令解析器来得到要获取的信息 指令解析器如下: public class CMDExecutor { /**

如何在Windows、Linux中获取主机的网络信息和公网地址

在我们的日常工作中,我们会需要进行查询主机当下的网络信息和公网上看到的IP地址信息,他们就像是网路上的名片,让我们找到彼此. Windows下如何获取内网和公网信息 在windows下该如何获取网路信息呢? 打开windows下的命令行,输入如下命令:  大家可以看到,在上述的截图中列出了内网地址,DNS信息,网关信息,内网地址,外网地址等等信息,包括无线还是优先的网卡等等信息. 这里截取了某个无线网卡的网络信息,做一个简单的示例. 那如何获取其公网信息呢? -** baidu.com中输入公网

C# 网络编程之通过豆瓣API获取书籍信息(一)

这篇文章主要是讲述如何通过豆瓣API获取书籍的信息,起初看到这个内容我最初的想法是在"C# 网络编程之网页简单下载实现"中通过HttpWebResponse类下载源码,再通过正则表达式分析获取结点标签得到信息.但后来发现可以通过豆瓣API提供的编程接口实现. 该文章仅是基础性C#网络编程文章,尝试测试了下豆瓣API,并没什么高深的内容.但希望对大家有所帮助,仅供学习. (警告:文章仅供参考,提供一种想法,否则访问多次-10次被403 forbidden莫怪.建议认证使用豆瓣API) 一

【Qt5开发及实例】28、获取本机网络信息

networkinformation.h /** * 书本:[Qt5开发及实例] * 功能:获取本机网络信息 * 文件:networkinformation.h * 时间:2015年2月5日14:51:33 * 作者:cutter_point */ #ifndef NETWORKINFORMATION_H #define NETWORKINFORMATION_H #include <QWidget> #include <QLabel> #include <QLineEdit&

Qt网络获取本机网络信息

下面我们就讲解如何获取自己电脑的IP地址以及其他网络信息.这一节中,我们会涉及到网络模块(QtNetwork Module)中的QHostInfo ,QHostAddress ,QNetworkInterface和QNetworkAddressEntry等几个类.下面是详细内容. 我们新建Qt4 Gui Application 工程,工程名为myIP ,选中QtNetwork模块,Base class选择QWidget. 我们在widget.h文件中包含头文件:#include <QtNetwo

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

通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到java路径.比如windows32位操作系统需要将lib中sigar-x86-winnt.dll文件拷贝到java SDK目录的bin内 参考官方主页上的配置项. File Language Description Required sigar.jar Java Java API Yes (for

Qt学习之路:获取本机网络信息

用Qt5实现的简单程序,获取本机网络信息. 建立工程后,在.pro里加入: QT += network 用Qt设计器创建界面: 在widget.h中声明getHostInformation类: public: int getHostInformation(); 声明槽函数: public slots : void slotDetail(); 并包含头文件: #include <QHostInfo> #include <QNetworkInterface> 在widget.cpp中实