1.查询所有电子围栏

package com.skjd.util;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair; public class HttpUtils { // 代理服务器的HTTP请求协议,客户端真实IP字段名称
public static final String X_REAL_IP = "x-forwarded-for"; public static String get(final String url) throws Exception {
String result = null;
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpGet httpGet = new HttpGet(url);
CloseableHttpResponse response = httpclient.execute(httpGet);
try {
System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
result = org.apache.http.util.EntityUtils.toString(entity);
org.apache.http.util.EntityUtils.consume(entity);
} finally {
response.close();
}
} finally {
httpclient.close();
} return result;
} public static String post(final String url, final Map<String, String> param) throws Exception {
String result = null;
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpPost httpPost = new HttpPost("http://httpbin.org/post");
List<NameValuePair> nvps = new ArrayList<NameValuePair>(); for (String key : param.keySet()) {
nvps.add(new BasicNameValuePair(key, param.get(key)));
} httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response = httpclient.execute(httpPost); try {
System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
result = org.apache.http.util.EntityUtils.toString(entity);
org.apache.http.util.EntityUtils.consume(entity);
} finally {
response.close();
}
} finally {
httpclient.close();
}
return result;
} /**
* 发送POST请求的方法
*/
public static String sendPostRequest(String url,String param){
HttpURLConnection httpURLConnection = null;
OutputStream out = null; //写
InputStream in = null; //读
int responseCode = 0; //远程主机响应的HTTP状态码
String result="";
try{
URL sendUrl = new URL(url);
httpURLConnection = (HttpURLConnection)sendUrl.openConnection();
//post方式请求
httpURLConnection.setRequestMethod("POST");
//设置头部信息
httpURLConnection.setRequestProperty("headerdata", "ceshiyongde");
//一定要设置 Content-Type 要不然服务端接收不到参数
httpURLConnection.setRequestProperty("Content-Type", "application/Json; charset=UTF-8");
//指示应用程序要将数据写入URL连接,其值默认为false(是否传参)
httpURLConnection.setDoOutput(true);
//httpURLConnection.setDoInput(true);
httpURLConnection.setUseCaches(false);
httpURLConnection.setConnectTimeout(30000); //30秒连接超时
httpURLConnection.setReadTimeout(30000); //30秒读取超时
//获取输出流
out = httpURLConnection.getOutputStream();
//输出流里写入POST参数
out.write(param.getBytes());
out.flush();
out.close();
responseCode = httpURLConnection.getResponseCode();
BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(),"UTF-8"));
result =br.readLine();
}catch(Exception e) {
e.printStackTrace();
}
return result; } /**
* 发送GET请求的方法
*/
public static String sendPostRequestGet(String url){
HttpURLConnection httpURLConnection = null;
OutputStream out = null; //写
InputStream in = null; //读
int responseCode = 0; //远程主机响应的HTTP状态码
String result="";
try{
URL sendUrl = new URL(url);
httpURLConnection = (HttpURLConnection)sendUrl.openConnection();
//post方式请求
httpURLConnection.setRequestMethod("GET");
//设置头部信息
httpURLConnection.setRequestProperty("headerdata", "ceshiyongde");
//一定要设置 Content-Type 要不然服务端接收不到参数
httpURLConnection.setRequestProperty("Content-Type", "application/Json; charset=UTF-8");
//指示应用程序要将数据写入URL连接,其值默认为false(是否传参)
httpURLConnection.setDoOutput(true);
//httpURLConnection.setDoInput(true); httpURLConnection.setUseCaches(false);
httpURLConnection.setConnectTimeout(30000); //30秒连接超时
httpURLConnection.setReadTimeout(30000); //30秒读取超时
responseCode = httpURLConnection.getResponseCode();
BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(),"UTF-8"));
result =br.readLine();
}catch(Exception e) {
e.printStackTrace();
}
return result; } /**
* for nigx返向代理构造 获取客户端IP地址
* @param request
* @return
*/
public static String getRemoteHost(HttpServletRequest request){
String ip = request.getHeader(X_REAL_IP);
if(ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {
ip = request.getRemoteAddr();
}
return ip.split(",")[0];
} public static void main(String[] args) {
try {
System.out.println(get("http://www.baidu.com"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

http请求工具类

    /**
* 根据key查询所有的围栏
* 返回所有围栏的信息
* @param pd
* @return
* @throws Exception
*/
public List<Map<String,Object>> select(Map<String,Object> pd) throws Exception{
Gson gson=new Gson();
String key=pd.get("key").toString();
String url="http://restapi.amap.com/v4/geofence/meta?key="
+key;
//请求返回的参数
String data=HttpUtils.sendPostRequestGet(url);
//转为对象便于获取
Map<String,Object> dataJson = gson.fromJson(data, HashMap.class);
Map<String, Object> map=(LinkedTreeMap)dataJson.get("data");
List<Map<String,Object>> list = (List)map.get("rs_list"); return list;
}

2.创建围栏

/**
* 传入对应格式的坐标区域,创建一个围栏;返回status(新增成功0,已存在返回1;失败返回2);若新增成功则返回gid;message信息
*/
public static PageData xyUtil(PageData pd){
PageData pd2=new PageData();
pd.put("key", "be8e6c802d51a4be29c99be895d8c2c7");
//数据库读取的坐标参数
/*114.288221,30.593268#114.321866,30.580559#114.311223,30.560015#114.291278,30.602487#*/
//第三方接口要求的格式:lon1,lat1;lon2,lat2;lon3,lat3(3<=点个数<=5000)
//将#号换为;
String points = pd.getString("points").replace("#", ";");
String key=pd.getString("key");
String name=pd.getString("name1");
PageData pd3=new PageData();
pd3.put("points", points);
pd3.put("name", name);
/*pd3.put("valid_time ", DateUtil.getDay());设置过期时间、默认90天*/
pd3.put("repeat", "Mon,Tues,Wed,Thur,Fri,Sat,Sun");//可以指定每天的监控时间段和一周内监控的日期
Gson gson=new Gson();
//传入的参数
String param=gson.toJson(pd3);
String url="http://restapi.amap.com/v4/geofence/meta?key="
+ key
+ "&type=ajaxRequest";
String data=HttpUtil.sendPostRequest(url,param);
//请求回来的数据
System.out.println(data);
PageData data2 = gson.fromJson(data, pd.getClass());
PageData data3 = gson.fromJson(data2.get("data").toString(), pd.getClass());
//状态为0说明新增成功!
if(data3.get("status").toString().equals("0.0")){
pd2.put("status", "0");
pd2.put("gid", data3.get("gid").toString());
//返回状态106.0说明已存在,则查询此区域的gid
}else if(data3.get("status").toString().equals("106.0")){
pd2.put("status", "1");
}else{
pd2.put("status", "2");
}
pd2.put("message", data3.get("message").toString());
return pd2;
}

3.更新围栏

/**
* 更新围栏;传入围栏名称name;gid;传入围栏坐标点points
* @param pd
* @return 返回status
*/
public static PageData xyupdata(PageData pd){
PageData pd2=new PageData();
pd.put("key", "be8e6c802d51a4be29c99be895d8c2c7");
String key=pd.getString("key");
/* String gid=pd.getString("gid");*/
String gid=pd.getString("gid");
pd2.put("repeat", "Mon,Tues,Wed,Thur,Fri,Sat,Sun");
pd2.put("points",pd.getString("points").replace("#", ";"));
pd2.put("name", pd.getString("name1")); Gson gson=new Gson();
//传入的参数
String param=gson.toJson(pd2);
String url="http://restapi.amap.com/v4/geofence/meta?key="
+ key+"&gid="
+gid
+ "&type=ajaxRequest&method=patch";
String data=HttpUtil.sendPostRequest(url,param);
System.out.println(data);
PageData data2 = gson.fromJson(data, pd.getClass());
PageData data3 = gson.fromJson(data2.get("data").toString(), pd.getClass());
return data3;
}

4.删除围栏

    /**
* 删除围栏;传入围栏名称gid;
* @param pd
* @return 返回status
*/
public static PageData xydel(PageData pd){
PageData pd2=new PageData();
pd.put("key", "be8e6c802d51a4be29c99be895d8c2c7");
String key=pd.getString("key");
/* String gid=pd.getString("gid");*/
String gid=pd.getString("gid");
Gson gson=new Gson();
//传入的参数
String param=gson.toJson(pd2);
String url="http://restapi.amap.com/v4/geofence/meta?key="
+ key+"&gid="
+gid
+ "&type=ajaxRequest&method=delete";
String data=HttpUtil.sendPostRequest(url,param);
System.out.println(data);
PageData data2 = gson.fromJson(data, pd.getClass());
PageData data3 = gson.fromJson(data2.get("data").toString(), pd.getClass());
return data3;
}

5.查询一个坐标是否在围栏内;如果需要查询是否在指定的围栏内,需要做进一步处理

    /**需要传入参数key;diu(唯一设备号);时间戳;坐标点
*返回 状态status(0表示在范围内;1表示不在范围内)
*如果在范围内,则返回围栏列表,带有gid和name
* @throws Exception
*/
public Map<String,Object> xyTest(Map<String,Object> pd) throws Exception{
Map<String,Object> pd2=new HashMap(); //坐标点
String locations =pd.get("locations").toString();
//key
String key=pd.get("key").toString();
//设备唯一标识
String diu=pd.get("diu").toString();
//时间戳
String time="1484816232";
Gson gson=new Gson();
String url="http://restapi.amap.com/v4/geofence/status?"
+ "key="+key
+ "&diu="+diu
+ "&locations="+locations+","
+ time;
//请求返回的参数
String data=HttpUtils.sendPostRequestGet(url);
//转为对象便于获取
Map<String,Object> dataJson = gson.fromJson(data, HashMap.class);
Map<String, Object> map=(LinkedTreeMap)dataJson.get("data"); //获取围栏事件列表;如果为空说明不在围栏内
if(map.get("fencing_event_list")==null||((List)map.get("fencing_event_list")).size()<1){
pd2.put("status", "1");
return pd2;
}
//如果不为空,则获取里面的返回值
List<Map<String,Object>> list = (List) map.get("fencing_event_list");
List<Map<String,Object>> list2 = new ArrayList<>();
for(int i=0;i<list.size();i++){
Map<String,Object> pd3=new HashMap();
Map<String,Object> map2 = list.get(i);
//如果高德地图api返回的状态为in说明在范围内
if(map2.get("client_status").toString().equals("in")){
//围栏信息
Map<String,Object> map3 =(Map)map2.get("fence_info"); //添加全局围栏gid值;
pd3.put("fence_gid",map3.get("fence_gid").toString());
//添加围栏名称
pd3.put("fence_name", map3.get("fence_name").toString());
list2.add(pd3);
}
}
//添加状态值
pd2.put("status", "0");
pd2.put("list", list2);
return pd2;
}

高德地图web端笔记;发送http请求的工具类的更多相关文章

  1. 高德地图web 端智能围栏

    最近有个项目,需要在web上批量给设备设置智能围栏,设备超出范围报警,查看高德地图webJS API,web端操作案例如,后台判断没有提供源码 <!-- 重点参数:iconStyle --> ...

  2. 模拟发送http请求的工具推荐

    做网站开发时,经常需要发送请求来测试自己的代码是否OK,这时候模拟发送http请求的工具就起到了很大的作用.特别是需要在请求带header时就更加的有必要使用工具.下面推荐的工具有的是基于系统开发的程 ...

  3. 发送http请求和https请求的工具类

    package com.haiyisoft.cAssistant.utils; import java.io.IOException;import java.util.ArrayList; impor ...

  4. java中模拟http(https)请求的工具类

    在java中,特别是java web中,我们经常需要碰到的一个场景是我们需要从服务端去发送http请求,获取到数据,而不是直接从浏览器输入请求网址获得相应.比如我们想访问微信接口,获取其返回信息. 在 ...

  5. HttpUtils 用于进行网络请求的工具类

    原文:http://www.open-open.com/code/view/1437537162631 import java.io.BufferedReader; import java.io.By ...

  6. HTTP请求客户端工具类

    1.maven 引入依赖 <dependency> <groupId>commons-httpclient</groupId> <artifactId> ...

  7. 百度地图WEB端判断用户是否在网格范围内

    在pc端设置商家的配送范围,用户在下单时,根据用户设置的配送地点判断是否在可配送范围内,并给用户相应的提示. 下面说下我的实现思路: 1.用百度地图在PC端设置配送范围,可拖拽选择 2.根据用户设置的 ...

  8. Java发送socket请求的工具

    package com.tech.jin.util; import java.io.ByteArrayOutputStream; import java.io.IOException; import ...

  9. 项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!

    前言 系列文章:[传送门] 洗了个澡,准备写篇博客.然后看书了.时间 3 7 分.我慢慢规律生活,向目标靠近.  很喜欢珍惜时间像叮当猫一样 正文 慢慢地,二维码实现签到将要落幕了.下篇文章出二维码实 ...

随机推荐

  1. CentOS6.8安装配置sonarqube6.4

    下载最新版本的sonar(现在改名叫sonarqube) https://www.sonarqube.org/downloads/ 我下载的版本是Sonarqube6.4        1 使用前需要 ...

  2. POJ3233 Matrix Power Series(快速幂求等比矩阵和)

    题面 \(solution:\) 首先,如果题目只要我们求\(A^K\) 那这一题我们可以直接模版矩乘快速幂来做,但是它现在让我们求$\sum_{i=1}^{k}{(A^i)} $ 所以我们思考一下这 ...

  3. layer弹出层的iframe页面回调

    $("#ChoiceBank").click(function () { var width = $("#content").css("Width&q ...

  4. 基于Python的机器学习实战:Apriori

    目录: 1.关联分析 2. Apriori 原理 3. 使用 Apriori 算法来发现频繁集 4.从频繁集中挖掘关联规则 5. 总结 1.关联分析  返回目录 关联分析是一种在大规模数据集中寻找有趣 ...

  5. 【Shell】带颜色输出(白底x色)

    echo -e "\033[31mHello World.\033[0m" 红色31m 绿色32m 黄色33m 蓝色34m 黑色30m 白色37m 紫色35m 深绿色36m

  6. java中printf()方法简单用法

    %n 换行 相当于 \n %c 单个字符 %d 十进制整数 %u 无符号十进制数 %f 十进制浮点数 %o 八进制数 %x 十六进制数 %s 字符串 %% 输出百分号 > 在printf()方法 ...

  7. 【转】通过xml处理sql语句时对小于号与大于号的处理转换

    当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序 ...

  8. BOvW简介

    原文地址:http://blog.csdn.net/ddreaming/article/details/52894379 BOW (bag of words) 模型简介 Bag of words模型最 ...

  9. mysql数据库查询库中所有表所占空间大小

    SELECT CONCAT(table_schema,'.',table_name) AS 'TABLE_NAME', CONCAT(, ),'M') AS 'ROW_SIZE', CONCAT( ) ...

  10. jenkins cobertura单元测试

    1.1      Maven 工程 pom.xml 修改 1.2      Build添加插件目标 此时构建项目,会在项目 targer/site/cobertura 目录中生成 html 与 xml ...