httpPost的两种方式
Posted joker331
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了httpPost的两种方式相关的知识,希望对你有一定的参考价值。
1,post-Body流和post参数,以下客户端代码和服务端代码可共用
客户端代码
/**
* post 方法
* 抛送给EDI
* @param url http://127.0.0.1:9003/api/edi/csm/csmReturnSubConBody?customerId=Fotile_CSM&api=csmreturnsub_confirm&id=6006
* @param jsonParam xml报文结构
* @return
*/
String httpPost45(String url, String jsonParam) {
//url?后面的即为post parmas 参数,bodu 放在数据流中进行传输
CloseableHttpClient httpclient = HttpClients.createDefault()
// HttpGet httpGet = new HttpGet(url)
HttpPost post=new HttpPost(url)
//httpClient 4.5版本的超时参数配置
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(50000).setConnectionRequestTimeout(50000)
.setSocketTimeout(50000).build()
post.setConfig(requestConfig)
//往BODY里填充数据主体
StringEntity entitys=new StringEntity(jsonParam.toString(), "utf-8")
entitys.setContentEncoding("UTF-8")
entitys.setContentType("application/xml")
post.setEntity(entitys)
HttpResponse response = httpclient.execute(post)
// System.out.println("得到的结果:" + response.getStatusLine())//得到请求结果
String str = EntityUtils.toString(response.getEntity())//得到请求回来的数据
return str
}
服务端代码
@ResponseBody
@RequestMapping(value = "csmReturnSubConBody", method = RequestMethod.POST, produces = "application/xml")
ResponseMessage csmReturnSubConBody(HttpServletRequest request, HttpServletResponse response,
@RequestParam Map<String, String> params) {
//params为客户端URL?后面的参数集,同理,也可以将bodu放到参数集里,进行传输
CustomerInfo customerInfo = erpSetting.getCustomerInfo(params.customerId as String)
if (!customerInfo) return
ApiInfo apiInfo = erpSetting.getApiInfo(customerInfo, params.api as String)
if (!apiInfo) return
String body = readBody(request)//这里去解析post流里的body数据
ResponseMessage rsp = csmSvc.convertBodyAndSendErpRetu(apiInfo, customerInfo, body, "xml", params.id as Object, null)
return rsp
}
以上是关于httpPost的两种方式的主要内容,如果未能解决你的问题,请参考以下文章