httpclient发送get请求
/**
* 获取httpclient的请求url地址
*/
public static String getUrl(){
String url = "http://"+map.get("server")+":"+map.get("server_port")+map.get("heartbeat_path");
System.out.println(url);
StringBuilder params = new StringBuilder(StringUtils.EMPTY);
for (String key : map.keySet()) {
if("timestamp".equals(key)){
try {
params=params.append(key).append("=").append(URLEncoder.encode(map.get(key).toString(), "UTF-8")).append("&");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}else if("heartbeat_path".equals(key)){
try {
params=params.append(key).append("=").append(URLEncoder.encode(map.get(key).toString(), "utf-8")).append("&");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}else if("cmd".equalsIgnoreCase(key)){
boolean isEndError=map.get(key).toString().endsWith("error!!!");
if("mac error!!!".equalsIgnoreCase(map.get(key).toString())||isEndError){
params = params.append(key).append("=").append("")
.append("&");
}else{
params = params.append(key).append("=").append(map.get(key))
.append("&");
}
}else{
params = params.append(key).append("=").append(map.get(key))
.append("&");
}
}
if (!"".equals(params)) {
url = url + "?" + params.toString();
}
url = url.substring(0, url.length() - 1);
return url;
} /**
* 发送httpclient请求,并根据服务器端的返回数据更新设备状态
*/
public static void httpGet(String url) {
//记录当前状态
HashMap<String, Object> temp=new HashMap<String,Object>();
for(Iterator it = map.keySet().iterator() ; it.hasNext();){
String key = it.next().toString();
temp.put(key, map.get(key));
}
Helper.mapSession=temp;
CloseableHttpClient httpClient = HttpClients.createDefault();
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(20000).setConnectTimeout(20000).build();
HttpGet httpget = new HttpGet(url);
httpget.addHeader("Accept", "*/*");
httpget.addHeader("Connection", "keep-alive");
httpget.addHeader("Accept-Encoding", "gzip, deflate");
CloseableHttpResponse response;
try {
response = httpClient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println(response.getStatusLine());
if (entity != null) {
String params=EntityUtils.toString(entity);
String[] paramsAry=params.split("\\|");
if(paramsAry.length==4){ map.put("status", paramsAry[3]);
String[] cmdAry=paramsAry[2].split("@@");
System.out.println("response={"+params+"}");
map.put("rt", "");
if(!"".equals(cmdAry[0].trim())&&cmdAry[0]!=null){
if(cmdAry[0].endsWith("error!!!")){
map.put("cmd", "");
map.put("status", 0);
Helper.flag=false;//没有指令的情况
return;
}
reciveTime=new Date().getTime();
//map.put("timestamp", new Date());
if(!("".equals(cmdAry[0])||null==cmdAry[0])){
Helper.flag=true;//有指令的情况
}
map.put("cmd", cmdAry[0]); if(cmdAry.length>1){
for(int i=1;i<cmdAry.length;i++){
String[] param=cmdAry[i].split("=");
if("sensor_indoor_temp".equalsIgnoreCase(param[0])){
double indoorTemp=Double.parseDouble(map.get("indoor_temp").toString());
double value=Double.parseDouble(param[1]);
map.put("indoor_temp", indoorTemp+value);
}else if("sensor_outdoor_temp".equalsIgnoreCase(param[0])){
double indoorTemp=Double.parseDouble(map.get("outdoor_temp").toString());
double value=Double.parseDouble(param[1]);
map.put("outdoor_temp", indoorTemp+value);
}
map.put(param[0], param[1]);
}
return;
}
}else{
map.put("cmd", "");
map.put("status", 0);
Helper.flag=false;//没有指令的情况
}
}else{
System.out.println("response={"+params+"}");
} }
response.close();
httpClient.close();
} catch (IOException e) {
Helper.startProgram=false;
Helper.flag=false;
runDeviceSimulator();
//e.printStackTrace();
}
}
httpclient发送get请求的更多相关文章
- 【JAVA】通过HttpClient发送HTTP请求的方法
HttpClient介绍 HttpClient 不是一个浏览器.它是一个客户端的 HTTP 通信实现库.HttpClient的目标是发 送和接收HTTP 报文.HttpClient不会去缓存内容,执行 ...
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- (一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
(一)----使用HttpClient发送HTTP请求(通过get方法获取数据) 一.HTTP协议初探: HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是 ...
- Httpclient发送json请求
一.Httpclient发送json请求 public String RequestJsonPost(String url){ String strresponse = null; try ...
- .net core使用HttpClient发送代理请求_程序内抓包_Fiddler抓包
前言: 通过Fiddler抓取浏览器请求数据,相信大家已经都会用了,我们知道Fiddler是通过在本机计算器添加一个默认的代理服务器来实现的抓包数据的,端口号为:8888. 其实当我们打开Fiddl ...
- java httpclient发送json 请求 ,go服务端接收
/***java客户端发送http请求*/package com.xx.httptest; /** * Created by yq on 16/6/27. */ import java.io.IOEx ...
- 使用HttpClient发送HTTPS请求以及配置Tomcat支持SSL
这里使用的是HttpComponents-Client-4.1.2 package com.jadyer.util; import java.io.File; import java.io.FileI ...
- httpclient发送request请求时设置header和timeout
package com.xxx.xxx.common; import java.io.BufferedReader; import java.io.InputStreamReader; import ...
- 使用httpclient发送post请求与get请求
最近因为项目的要求,需要使用httpclient来发送请求.但是查阅了许多博客,大家发送请求的方法各不相同.原因是因为httpclient的jar包的不同版本,其内部方法也不相同.因此抛开具体用到的j ...
随机推荐
- [LUOGU] P3004 [USACO10DEC]宝箱Treasure Chest
第一眼:区间DP,可以瞎搞 f[i][j]=max(sum(i,j)-f[i+1][j],sum(i,j)-f[i][j-1]) 提出来就是f[i][j]=sum(i,j)-min(f[i+1][j] ...
- python基础(一)—— 核心数据类型
Hello World程序 [root@mysql ~]# python3 Python 3.6.5 (default, Jul 8 2018, 11:41:23) [GCC 4.4.7 20120 ...
- NFS和DHCP服务
1. NFS NFS,Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS: NFS允许一个系统在网络上与他人共享目录和文件 ...
- 准备新的代码迁移到cnblogs
http://www.cnblogs.com/danghuijian/ http://www.cnblogs.com/danghuijian/
- Fidder详解-抓取HTTPS清求(Web/App)抓包分析(靠谱篇)
为什么要学Fidder抓包? 学习接口,必须要学http协议,不要求您对协议的掌握有多深.只是希望你能够了解什么是协议.协议的报文.状态码等等!本文通过抓包工具Fidder带你进入接口的大门.我们通过 ...
- spring的IOC底层原理
我们调用一个类的方法,首先是User user=new User(),对象调用这个方法,user.add(),这种方法有一个缺陷就是代码的耦合度太高,比如你的servlet调用User类里的方法,需 ...
- HDU 3397 双lazy标记的问题
题目大意 对一个只有0和1的序列,支持以下几种操作1.将区间所有的值变成12.将区间所有的值变为03.将区间的0和1翻转(0变成1 1变成0)4.求区间中1的个数5.求区间连续最长的1的个数 http ...
- Windows的Java_HOME环境变更配置
Windows的Java_HOME环境变更配置 一般会配置三个环境变更: 1.系统变量 变量名JAVA_HOME 变量值=安装目录,如:C:\Program Files (x86)\Java\jdk ...
- 《effective C++》:条款37——绝不重新定义继承而来的缺省参数值
引子: 阿里的一道题: #include <IOSTREAM> using namespace std; class A{ public: ) { cout<<"a~ ...
- 2014 蓝桥杯 预赛 c/c++ 本科B组 第九题:地宫取宝(12') [ dp ]
历届试题 地宫取宝 时间限制:1.0s 内存限制:256.0MB 锦囊1 锦囊2 锦囊3 问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件 ...