HttpClient通过Post方式发送Json数据
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/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;
}
}
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
3 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献11条内容
所有评论(0)