客户端代码


/**
* 从接口获取数据
* @param url 服务器接口地址
* @param json 传入的参数 若获取全部,此项为空
* @return 返回查询到的数据
* @throws HttpException
* @throws IOException
*/
public JSONObject post(String url, String json) throws HttpException, IOException{
try {
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url);
httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json;charset=utf-8");
StringEntity se = new StringEntity(json, Charset.forName("UTF-8"));
se.setContentType("text/json");
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); httpPost.setEntity(se);
HttpResponse response = httpClient.execute(httpPost); if (response != null && response.getStatusLine().getStatusCode() == 200){
String result = EntityUtils.toString(response.getEntity(), "UTF-8");
JSONObject resultJsonObject = JSONObject.parseObject(result);
return resultJsonObject;
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}

测试方法


//本地tomcat
// private String url = "http://127.0.0.1:8080/Car4s-1.0-SNAPSHOT/carApi/getCarAll";//获取全部数据
// private String url = "http://127.0.0.1:8080/Car4s-1.0-SNAPSHOT/carApi/getCar";//获取某一条记录
// private String url = "http://127.0.0.1:8080/Car4s-1.0-SNAPSHOT/carApi/postCarList";//推送数据 @Test
public void testPostList() throws IOException, HttpException { JSONArray jsonArray = new JSONArray();
//批量推送数据
for (int i = 1; i < 3; i++) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("carType", "测试00"+i);
//Integer modifyType 1增加 2更新
jsonObject.put("modifyType", new Integer(1));
jsonArray.add(jsonObject);
} //推送一条数据
// JSONObject jsonObject = new JSONObject();
// jsonObject.put("carSize", 4);
// jsonObject.put("carType", "测试3");
// jsonObject.put("keepRequirement", "无");
// jsonObject.put("keepTitle", "无");
// jsonObject.put("keepPrice", 80.0);
// jsonObject.put("repairePrice", 80.0);
// jsonObject.put("modifyType", new Integer(1));
// jsonArray.add(jsonObject); String string = JSONArray.toJSONString(jsonArray);
JSONObject post = post(url, string);
System.out.println(post);
}

服务器方法


/**
* 推送接口,支持一条或者多条数据
* @param request
* @param response
* @return
* @throws IOException
*/
@RequestMapping("/postCarList")
@ResponseBody
public JSONObject postCarList(HttpServletRequest request, HttpServletResponse response) throws IOException {
JSONObject jsonObject = new JSONObject();
request.setCharacterEncoding("UTF-8");
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(),"utf-8"));
String jsonStr = null;
StringBuilder result = new StringBuilder();
try {
while ((jsonStr = reader.readLine()) != null){
result.append(jsonStr);
}
}catch (Exception e){
e.printStackTrace();
}
reader.close(); JSONArray jsonArray = JSONArray.parseArray(result.toString());
try {
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject o = (JSONObject) jsonArray.get(i);
Car car = new Car();
car.setCarType(o.getString("carType"));
car.setLastTime(DateUtils.stringTodate(o.getString("lastTime"), null));
car.setCarSize(o.getInteger("carSize"));
car.setKeepRequirement(o.getString("carType"));
car.setKeepTitle(o.getString("keepTitle"));
car.setKeepPrice(o.getDouble("keepPrice"));
car.setRepairePrice(o.getDouble("repairePrice"));
if (o.getInteger("modifyType") == null){
jsonObject.put("msg", "Post失败,未指定修改类型");
jsonObject.put("code", -1);
return jsonObject;
}
int modifyType = o.getInteger("modifyType");
//增加
if (modifyType == 1){
carService.save(car);
}
//更新
else if (modifyType == 2){
car.setCarId(o.getInteger("carId"));
carService.update(car);
}else {
jsonObject.put("msg", "Post失败,修改类型指定类型错误");
jsonObject.put("code", -1);
return jsonObject;
}
}
jsonObject.put("msg", "Post成功");
jsonObject.put("code", 1);
}catch (Exception e){
e.printStackTrace();
}
return jsonObject;
}

httpclient post推送数据的更多相关文章

  1. java接口对接——调用别人接口推送数据

    实际开发中经常会遇到要和其他平台或系统对接的情况,实际操作就是互相调用别人的接口获取或者推送数据, 当我们调用别人接口推送数据时,需要对方给一个接口地址以及接口的规范文档,规范中要包括接口的明确入参及 ...

  2. SQL Server 2000向SQL Server 2008 R2推送数据

    [文章摘要]最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他“服务器”向我们服务器推送的方式实现.我们服务器使用的是SQL Server 2008 R2,其他“服务器”使用的 ...

  3. WebService推送数据,数据结构应该怎样定义?

    存放在Session有一些弊端,不能实时更新.server压力增大等... 要求:将从BO拿回来的数据存放在UI Cache里面,数据库更新了就通过RemoveCallback "告诉&qu ...

  4. Flume推送数据到SparkStreaming案例实战和内幕源码解密

    本期内容: 1. Flume on HDFS案例回顾 2. Flume推送数据到Spark Streaming实战 3. 原理绘图剖析 1. Flume on HDFS案例回顾 上节课要求大家自己安装 ...

  5. SuperSocket主动从服务器端推送数据到客户端

    关键字: 主动推送, 推送数据, 客户端推送, 获取Session, 发送数据, 回话快照 通过Session对象发送数据到客户端   前面已经说过,AppSession 代表了一个逻辑的 socke ...

  6. Asp.net Core3.1+Vue 使用SignalR推送数据

    本文就简单使用 往前端页面推送消息 SignalR 是什么 SignalR是一个.NET Core/.NET Framework的开源实时框架. SignalR的可使用Web Socket, Serv ...

  7. hive向es推送数据

    第一步:首先要保证网络是通的,很多公司里子网遍布,要和运维和工程侧同事确认好网络是通的,es的地址可以通过curl es地址的方式测试一下. 第二步:下载需要的jar包,必须的是es-hadoop的包 ...

  8. 使用SignalR ASP.NET Core来简单实现一个后台实时推送数据给Echarts展示图表的功能

    什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...

  9. java推送数据到app--极光推送

    之前项目有用到需要把数据推送到app端 采用的是极光推送 特此把工具类和pom.xml需要的jar整理如下 pom.xml需要jar如下 <!-- 极光推送 --> <depende ...

随机推荐

  1. asp.net Core3.1自定义权限体系-菜单和操作按钮权限

    我们在做项目项目,经常会碰到权限体系,权限体系属于系统架构的一个最底层的功能,也是非常重要的功能,几乎在每个项目都会用到.那么我们该如何设计一个比较合理的且扩展性较强的权限体系呢? 经过多天的摸索,参 ...

  2. 更改默认Xcode

    更改默认 Xcode 的指令: sudo xcode-select -switch /Applications/Xcode.app  如果系统里面有好几个版本的 Xcode,可以用这个命令指定默认的 ...

  3. 新手学习java路线

    关于新手学习java的路线 笔者也是根据这个路线学习的,希望对你们有所帮助. 首先你要确定你是学习java 并且能够踏踏实实的走下去.一定要多学习,我也可以一直陪你走下去的. 笔者一年工作经验,科班毕 ...

  4. mysql再回首

    Mysql与Oracle的区别 1.实例区别 Mysql是一个轻量型数据库,开源免费.Oracle是收费的而且价格非常高. Mysql一个实例可以操作多个库,而Oracle一个实例只能对应一个库. M ...

  5. 百度与谷歌seo优化的差别

    http://www.wocaoseo.com/thread-126-1-1.html 常有朋友问谷歌(google)和百度(baidu)到底有什么区别?我在纠结这个问题该如何回答.如果从公平公正的角 ...

  6. 多层v-for循环嵌套导致v-model双向绑定失败,页面不重新渲染

    数据格式是数组包对象,对象里面再包数组,数组再包对象,如下: 外层for遍历出editInfo里面所有的属性,内层for遍历Options. 最终实现样子 两个问题: 1.点加减按钮的时候往optio ...

  7. P3419 [POI2005]SAM-Toy Cars

    Description ​ Jasio 是一个三岁的小男孩,他最喜欢玩玩具了,他有n 个不同的玩具,它们都被放在了很高的架子上所以Jasio 拿不到它们. 为了让他的房间有足够的空间,在任何时刻地板上 ...

  8. Queries for Number of Palindromes(区间dp)

    You've got a string s = s1s2... s|s| of length |s|, consisting of lowercase English letters. There a ...

  9. 轻轻松松学CSS:媒体查询

    轻轻松松学CSS:利用媒体查询创建响应式布局 媒体查询,针对不同的媒体类型定制不同的样式规则.在网站开发中,可以创建响应式布局. 一.初步认识媒体查询在响应式布局中的应用 下面实例在屏幕可视窗口尺寸大 ...

  10. Java8 Functional(函数式接口)

    Functional 函数式(Functional)接口 只包含一个抽象方法的接口,称为函数式接口. 你可以通过 Lambda 表达式来创建该接口的对象.(若 Lambda 表达式抛出一个受检异常(即 ...