您的位置:首页 > 理论基础 > 计算机网络

HttpClient通过Post方式发送Json数据

2017-09-05 19:10 363 查看
服务器用的是Springmvc,接口内容:

[java] view plain copy

print?

@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访问的时候,代码如下:

[javascript] view plain copy

print?

$.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方式访问,代码如下:

[java] view plain copy

print?

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐