httpclient post推送数据
客户端代码
/**
* 从接口获取数据
* @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推送数据的更多相关文章
- java接口对接——调用别人接口推送数据
实际开发中经常会遇到要和其他平台或系统对接的情况,实际操作就是互相调用别人的接口获取或者推送数据, 当我们调用别人接口推送数据时,需要对方给一个接口地址以及接口的规范文档,规范中要包括接口的明确入参及 ...
- SQL Server 2000向SQL Server 2008 R2推送数据
[文章摘要]最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他“服务器”向我们服务器推送的方式实现.我们服务器使用的是SQL Server 2008 R2,其他“服务器”使用的 ...
- WebService推送数据,数据结构应该怎样定义?
存放在Session有一些弊端,不能实时更新.server压力增大等... 要求:将从BO拿回来的数据存放在UI Cache里面,数据库更新了就通过RemoveCallback "告诉&qu ...
- Flume推送数据到SparkStreaming案例实战和内幕源码解密
本期内容: 1. Flume on HDFS案例回顾 2. Flume推送数据到Spark Streaming实战 3. 原理绘图剖析 1. Flume on HDFS案例回顾 上节课要求大家自己安装 ...
- SuperSocket主动从服务器端推送数据到客户端
关键字: 主动推送, 推送数据, 客户端推送, 获取Session, 发送数据, 回话快照 通过Session对象发送数据到客户端 前面已经说过,AppSession 代表了一个逻辑的 socke ...
- Asp.net Core3.1+Vue 使用SignalR推送数据
本文就简单使用 往前端页面推送消息 SignalR 是什么 SignalR是一个.NET Core/.NET Framework的开源实时框架. SignalR的可使用Web Socket, Serv ...
- hive向es推送数据
第一步:首先要保证网络是通的,很多公司里子网遍布,要和运维和工程侧同事确认好网络是通的,es的地址可以通过curl es地址的方式测试一下. 第二步:下载需要的jar包,必须的是es-hadoop的包 ...
- 使用SignalR ASP.NET Core来简单实现一个后台实时推送数据给Echarts展示图表的功能
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...
- java推送数据到app--极光推送
之前项目有用到需要把数据推送到app端 采用的是极光推送 特此把工具类和pom.xml需要的jar整理如下 pom.xml需要jar如下 <!-- 极光推送 --> <depende ...
随机推荐
- vscode 安装go插件失败后,最简单的方法
vscode 安装go插件 参考: https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md https://goproxy. ...
- 总结java中创建并写文件的5种方式
在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者就帮大家总结一下java中创建文件的五种方法. Files.newBufferedWriter(Java 8) Files. ...
- 【Pod Terminating原因追踪系列之二】exec连接未关闭导致的事件阻塞
前一阵有客户docker18.06.3集群中出现Pod卡在terminating状态的问题,经过排查发现是containerd和dockerd之间事件流阻塞,导致后续事件得不到处理造成的. 定位问题的 ...
- C#知识点:操作XML
XML是什么就不用说了文本标记语言. 主要纪录如何对XML文件进行增删改查. Xml的操作类都存在System.xml命名空间下面. 应用型的直接上代码 using System; using Sys ...
- .NET多线程(Thread,ThreadPool,Task,Async与Await)
.NET多线程是什么? 进程与线程 进程是一种正在执行的程序. 线程是程序中的一个执行流. 多线程是指一个程序中可以同时运行多个不同的线程来执行不同的任务. .NET中的线程 Thread是创建和控制 ...
- seajs1.3.0源码解析之module依赖有序加载
/** * The core of loader */ ;(function(seajs, util, config) { // 模块缓存 var cachedModules = {} // 接口修改 ...
- TP6.0多应用模式隐藏路由中的应用名
本文默认采用的是多应用模式 PHP技术群: 159789818 ThinkPHP技术群: 828567087 1. 多应用模式中隐藏路由中的应用名的三种方式 域名绑定应用 增加应用入口 入口文件绑定应 ...
- Spring Boot 启动第一个页面(Spring二)
在前面的文章里我配置好了spring boot的环境,并选择STS开发工具 具体文章见:https://blog.csdn.net/qq_38175040/article/details/105481 ...
- pytest文档4-Allure报告清除上一次数据
前言 大家在执行过几次Allure之后就会发现,Allure的报告会把历史的执行结果都展示出来,但实际工作中我们可能只关心本次的结果,解决的话就需要修改一下执行命令了. 问题: 例如图中显示的第一条其 ...
- [程序员代码面试指南]数组和矩阵-数组的partition调整
题目 补充问题:数组只含0,1,2,对数组排序,要求时间复杂度O(n),额外空间复杂度O(1) 题解 维护三个变量,l,idx,r.左区间[0,l],中间区间[l+1,idx],右区间[idx+1,r ...