/**
* 获取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请求的更多相关文章

  1. 【JAVA】通过HttpClient发送HTTP请求的方法

    HttpClient介绍 HttpClient 不是一个浏览器.它是一个客户端的 HTTP 通信实现库.HttpClient的目标是发 送和接收HTTP 报文.HttpClient不会去缓存内容,执行 ...

  2. Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  3. Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. (一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    (一)----使用HttpClient发送HTTP请求(通过get方法获取数据) 一.HTTP协议初探: HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是 ...

  5. Httpclient发送json请求

    一.Httpclient发送json请求 public String RequestJsonPost(String url){    String strresponse = null;    try ...

  6. .net core使用HttpClient发送代理请求_程序内抓包_Fiddler抓包

    前言:  通过Fiddler抓取浏览器请求数据,相信大家已经都会用了,我们知道Fiddler是通过在本机计算器添加一个默认的代理服务器来实现的抓包数据的,端口号为:8888. 其实当我们打开Fiddl ...

  7. java httpclient发送json 请求 ,go服务端接收

    /***java客户端发送http请求*/package com.xx.httptest; /** * Created by yq on 16/6/27. */ import java.io.IOEx ...

  8. 使用HttpClient发送HTTPS请求以及配置Tomcat支持SSL

    这里使用的是HttpComponents-Client-4.1.2 package com.jadyer.util; import java.io.File; import java.io.FileI ...

  9. httpclient发送request请求时设置header和timeout

    package com.xxx.xxx.common; import java.io.BufferedReader; import java.io.InputStreamReader; import ...

  10. 使用httpclient发送post请求与get请求

    最近因为项目的要求,需要使用httpclient来发送请求.但是查阅了许多博客,大家发送请求的方法各不相同.原因是因为httpclient的jar包的不同版本,其内部方法也不相同.因此抛开具体用到的j ...

随机推荐

  1. PHP22 PHP在线支付

    易宝支付示例脚本 参考网址:https://blog.csdn.net/yerenyuan_pku/article/details/52239862 参数说明 p1_MerId:商户编号,网站在易宝上 ...

  2. struct获取不到值的小错误

    struct2 get set 这两个方法一定要用双骆驼命名法:getA() setA(),        而geta() seta()不行 我找了好久的错误,只能说框架这东西快捷方便,找起错误要人命

  3. 【转载】Shell 基础 -- 总结几种括号、引号的用法

    原作者:tongye 原文链接:https://www.cnblogs.com/tongye/p/10646211.html 以下为原文: Shell 脚本中经常需要用到一些括号.引号表达式,功能各不 ...

  4. c/s端测试——nw.js篇(selenium工具)

    最近在为兄弟部门开发自动化测试工具. 然后才知道现在竟然有JS工具可以把JS打包成cs端程序了,太牛了,js发展是真快.并且还是跨平台的,mac.windows.linux都支持. 当然,今天不是说n ...

  5. iOS开发基础知识

    1:App跳转至系统Settings 跳转在IOS8以上跟以下是有区别的,如果是IOS8以上可以如下设置: NSURL *url = [NSURL URLWithString:UIApplicatio ...

  6. Node.js fs文件系统模块

    一.读取文件几个步骤 1.先引入fs文件系统模块 2.使用readfile 或 readFileSync 注意点:它们的回调函数有两个参数,第一个是err,第二个是data,得到的data是buffe ...

  7. 第一章:systemverilog简介

    1.为何要学systemverilog ..... 2.systemverilog起源 ..... 3.systemverilog标准历程 systemverilog3.0 for 综合 system ...

  8. Android 图片设置圆角 方法之二

    Android中经常会遇到对图片进行二次处理,例如加圆角,或者显示圆形图片.接下来我们再介绍一种方法. 首先, 自定义ImageView: android:id="@+id/iv" ...

  9. Python 文件操作(一)

    一.注意事项 A.能调用方法的一定是对象 B.文件的操作流程: 1. 打开文件,得到文件句柄并赋值给一个变量 2. 通过句柄对文件进行操作 3. 关闭文件 二.操作实现方法 '''文件名:小双双文件内 ...

  10. HDU 5469 Antonidas

    Antonidas Time Limit: 4000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID:  ...