HttpClient通过Post方式发送Json数据
服务器用的是Springmvc,接口内容:
- @ResponseBody
- @RequestMapping(value="/order",method=RequestMethod.POST)
- public boolean order(HttpServletRequest request,@RequestBody List<Order> orders) throws Exception {
- AdmPost admPost = SessionUtil.getCurrentAdmPost(request);
- if(admPost == null){
- throw new RuntimeException("[OrderController-saveOrUpdate()] 当前登陆的用户职务信息不能为空!");
- }
- try {
- this.orderService.saveOrderList(orders,admPost);
- Loggers.log("订单管理",admPost.getId(),"导入",new Date(),"导入订单成功,订单信息--> " + GsonUtil.toString(orders, new TypeToken<List<Order>>() {}.getType()));
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- Loggers.log("订单管理",admPost.getId(),"导入",new Date(),"导入订单失败,订单信息--> " + GsonUtil.toString(orders, new TypeToken<List<Order>>() {}.getType()));
- return false;
- }
- }
通过ajax访问的时候,代码如下:
- $.ajax({
- type : "POST",
- contentType : "application/json; charset=utf-8",
- url : ctx + "order/saveOrUpdate",
- dataType : "json",
- anysc : false,
- data : {orders:[{orderId:"11",createTimeOrder:"2015-08-11"}]}, // Post 方式,data参数不能为空"",如果不传参数,也要写成"{}",否则contentType将不能附加在Request Headers中。
- success : function(data){
- if (data != undefined && $.parseJSON(data) == true){
- $.messager.show({
- title:'提示信息',
- msg:'保存成功!',
- timeout:5000,
- showType:'slide'
- });
- }else{
- $.messager.alert('提示信息','保存失败!','error');
- }
- },
- error : function(XMLHttpRequest, textStatus, errorThrown) {
- alert(errorThrown + ':' + textStatus); // 错误处理
- }
- });
通过HttpClient方式访问,代码如下:
- package com.ec.spring.test;
- import java.io.IOException;
- import java.nio.charset.Charset;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.apache.http.HttpResponse;
- import org.apache.http.HttpStatus;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.entity.StringEntity;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.util.EntityUtils;
- import com.google.gson.JsonArray;
- import com.google.gson.JsonObject;
- public class APIHttpClient {
- // 接口地址
- private static String apiURL = "http://192.168.3.67:8080/lkgst_manager/order/order";
- private Log logger = LogFactory.getLog(this.getClass());
- private static final String pattern = "yyyy-MM-dd HH:mm:ss:SSS";
- private HttpClient httpClient = null;
- private HttpPost method = null;
- private long startTime = 0L;
- private long endTime = 0L;
- private int status = 0;
- /**
- * 接口地址
- *
- * @param url
- */
- public APIHttpClient(String url) {
- if (url != null) {
- this.apiURL = url;
- }
- if (apiURL != null) {
- httpClient = new DefaultHttpClient();
- method = new HttpPost(apiURL);
- }
- }
- /**
- * 调用 API
- *
- * @param parameters
- * @return
- */
- public String post(String parameters) {
- String body = null;
- logger.info("parameters:" + parameters);
- if (method != null & parameters != null
- && !"".equals(parameters.trim())) {
- try {
- // 建立一个NameValuePair数组,用于存储欲传送的参数
- method.addHeader("Content-type","application/json; charset=utf-8");
- method.setHeader("Accept", "application/json");
- method.setEntity(new StringEntity(parameters, Charset.forName("UTF-8")));
- startTime = System.currentTimeMillis();
- HttpResponse response = httpClient.execute(method);
- endTime = System.currentTimeMillis();
- int statusCode = response.getStatusLine().getStatusCode();
- logger.info("statusCode:" + statusCode);
- logger.info("调用API 花费时间(单位:毫秒):" + (endTime - startTime));
- if (statusCode != HttpStatus.SC_OK) {
- logger.error("Method failed:" + response.getStatusLine());
- status = 1;
- }
- // Read the response body
- body = EntityUtils.toString(response.getEntity());
- } catch (IOException e) {
- // 网络错误
- status = 3;
- } finally {
- logger.info("调用接口状态:" + status);
- }
- }
- return body;
- }
- public static void main(String[] args) {
- APIHttpClient ac = new APIHttpClient(apiURL);
- JsonArray arry = new JsonArray();
- JsonObject j = new JsonObject();
- j.addProperty("orderId", "中文");
- j.addProperty("createTimeOrder", "2015-08-11");
- arry.add(j);
- System.out.println(ac.post(arry.toString()));
- }
- /**
- * 0.成功 1.执行方法失败 2.协议错误 3.网络错误
- *
- * @return the status
- */
- public int getStatus() {
- return status;
- }
- /**
- * @param status
- * the status to set
- */
- public void setStatus(int status) {
- this.status = status;
- }
- /**
- * @return the startTime
- */
- public long getStartTime() {
- return startTime;
- }
- /**
- * @return the endTime
- */
- public long getEndTime() {
- return endTime;
- }
- }
HttpClient通过Post方式发送Json数据的更多相关文章
- java 模拟http请求,通过流(stream)的方式,发送json数据和文件
发送端: /** * 以流的方式 * 发送文件和json对象 * * @return */ public static String doPostFileStreamAndJsonObj(String ...
- HttPclient 以post方式发送json
使用HttpClient 以POST的形式发送json字符串 步骤: 1.url .parameters 2.创建httpClient对象 3.创建HttpPost对象 4.为post对象设置参数 5 ...
- HttpClient发送Json数据到指定接口
项目中遇到将Json数据发送到指定接口,于是结合网上利用HttpClient进行发送. /** * post发送json数据 * @param url * @param param * @return ...
- python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)
昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...
- 使用Ajax方式POST JSON数据包(转)
add by zhj: 用ajax发送json数据时注意两点, 第一,使用JSON.stringify()函数将data转为json格式的字符串,如下 data: JSON.stringify({ ...
- Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件
一.Django与Ajax AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻 ...
- ajax 发送json数据时为什么需要设置contentType: "application/json”
1. ajax发送json数据时设置contentType: "application/json”和不设置时到底有什么区别? contentType: "application/j ...
- ajax发送json数据时为什么需要设置contentType: "application/json”
1. ajax发送json数据时设置contentType: "application/json”和不设置时到底有什么区别?contentType: "application/js ...
- 前端ajax用post方式提交json数据给后端时,网络报错 415
项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource ...
随机推荐
- 一个通用的分页存储过程实现-SqlServer(附上sql源码,一键执行即刻搭建运行环境)
使用前提 查询表必须有ID字段,且该字段不能重复,建议为自增主键 背景 如果使用ADO.NET进行开发,在查询分页数据的时候一般都是使用分页存储过程来实现的,本文提供一种通用的分页存储过程,只需要传入 ...
- python - 读取配置文件
# -*- coding:utf-8 -*- ''' @project: jiaxy @author: Jimmy @file: read_config.py @ide: PyCharm Commun ...
- python 时间、日期、时间戳的转换
在实际开发中经常遇到时间格式的转换,例如: 前端传递的时间格式是字符串格式,我们需要将其转换为时间戳,或者前台传递的时间格式和我们数据库中的格式不对应,我们需要对其进行转换才能与数据库的时间进行匹配等 ...
- 【java基础 17】集合中各实现类的性能分析
大致的再回顾一下java集合框架的基本情况 一.各Set实现类的性能分析 1.1,HashSet用于添加.查询 HashSet和TreeSet是Set的两个典型实现,HashSet的性能总是比Tree ...
- hdu 5444 构建二叉树,搜索二叉树
Elven Postman Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- Linux系统维护管理命令及vim编辑器
系统维护管理命令date.clear $>>date //显示或修改系统时间与日期. //%H:小时 %M:分钟 %S:秒 %Y完整年份 %d:日 %m:月份 eg: date " ...
- 【bzoj1163/bzoj1339】[Baltic2008]Mafia 网络流最小割
题目描述 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警方希望使用最小的代价控制一些车站,使得去掉这些车站后,匪徒无法从原定的初始点到达目标点 ...
- ACM程序设计选修课——Problem E:(ds:图)公路村村通(优先队列或sort+克鲁斯卡尔+并查集优化)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- LibreOJ2095 - 「CQOI2015」选数
Portal Description 给出\(n,k,L,R(\leq10^9)\),求从\([L,R]\)中选出\(n\)个可相同有顺序的数使得其gcd为\(k\)的方案数. Solution 记\ ...
- 刷题总结——解方程(NOIP2014)
题目: 题目描述 已知多项式方程: a0+a1x+a2x2+…+anxn=0 求这个方程在[1,m]内的整数解(n 和 m 均为正整数). 输入格式 输入共 n+2 行. 第一行包含 2 个整数 n. ...