java httppost 实例_实战演练java 调用http接口 post 例子

发起请求:

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.HttpURLConnection;

import java.net.URL;

import java.text.SimpleDateFormat;

import org.apache.http.util.TextUtils;

import com.alibaba.fastjson.JSONObject;

import cn.com.doone.tx.cloud.tool.common.util.Md5Util;

import java.util.Collection;

import java.util.Date;

public class IntfMain {

//post请求方法

public static String post(String strURL, String params) {

System.out.println(strURL);

System.out.println(params);

String result = "";

BufferedReader reader = null;

StringBuilder sb = new StringBuilder();

BufferedReader in = null;

try {

URL url = new URL(strURL);// 创建连接

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setDoOutput(true);

connection.setDoInput(true);

connection.setUseCaches(false);

connection.setInstanceFollowRedirects(true);

connection.setRequestMethod("POST"); // 设置请求方式

connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式

connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式

connection.connect();

if (params != null && !TextUtils.isEmpty(params)) {

byte[] writebytes = params.getBytes();

// 设置文件长度

// connection.setRequestProperty("Content-Length", String.valueOf(writebytes.length));

OutputStream outwritestream = connection.getOutputStream();

outwritestream.write(params.getBytes());

outwritestream.flush();

outwritestream.close();

}

int responseCode = connection.getResponseCode();

InputStream inputStream = null;

if (responseCode == 200) {

inputStream = new BufferedInputStream(connection.getInputStream());

} else {

inputStream = new BufferedInputStream(connection.getErrorStream());

}

in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));

String line;

while ((line = in.readLine()) != null) {

result+=line;

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return result;

}

public static void main(String[] args) {

//String url = "http://localhost:28001/intf/send";

String url = "http://###:##/gdctsWeb/intf/send";

long createTime = new Date().getTime();

long reqTime = new Date().getTime();

String bodyStr="{\"creator\":\"4\",\"operator\":\"4\",\"operateType\":\"ADD\",\"channelCode\":\"V7\",\"synId\":\"556445\",\"name\":\"計算機团体345\",\"password\":\"345123\",\"registerTime\":\"2018-07-0121:00:00\",\"account\":\"account041\",\"custType\":\"2\",\"bindNumber\":\"15055556666\",\"groupContact\":[{\"contactName\":\"团体联系人\",\"contactNumber\":\"155555555\",\"email\":\"2222@qq.com\",\"occupation\":\"leader\",\"qq\":\"313131\",\"remark\":\"联系人备注\"}],\"groupInfoEvt\":[{\"address\":\"团体地址\",\"areaCode\":\"111\",\"busiArea\":\"222\",\"cityCode\":\"322\",\"custIndustry\":\"行业\",\"groupNature\":\"性质\",\"groupSize\":\"大\",\"name\":\"某团体客户\",\"provinceCode\":\"1111\",\"registeredCapital\":\"资本\",\"remark\":\"备注\",\"zipCode\":\"350000\"}],\"members\":[{\"name\":\"名称\",\"contactNumber\":\"111444\",\"cerType\":\"1\",\"cerNo\":\"6874268552552\",\"sex\":\"1\",\"age\":\"10\"}],\"resource\":\"介绍\"}";

JSONObject paramJson = new JSONObject(true);

JSONObject body = new JSONObject(true);

body=JSONObject.parseObject(bodyStr);

JSONObject head = new JSONObject(true);

String intfCode = "CRM_CUSTGROUP004";

String sysSecret="GRD01";

String sysCode="V7";

String signOri=sysCode+intfCode+sysSecret+reqTime;

Collection values = body.values();

for (Object v : values) {

signOri=signOri+v.toString();

}

//System.out.println(signOri);

String sign = Md5Util.MD5(signOri);

String headStr="{\"sysCode\":\""+sysCode+"\",\"intfCode\":\""+intfCode+"\",\"reqTime\":\""+reqTime+"\",\"sign\":\""+sign+"\"}";

head=JSONObject.parseObject(headStr);

paramJson.put("head", head);

paramJson.put("body", body);

try {

String json = paramJson.toJSONString();

String postWithJSON = post(url, json);

System.out.println(postWithJSON);

} catch (Exception e) {

e.printStackTrace();

}

}

}

接收方:import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.URLDecoder;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Enumeration;

import java.util.HashMap;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.jsp.tagext.TryCatchFinally;

import org.apache.http.protocol.HTTP;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;

import cn.com.doone.tx.cloud.system.service.IntfConfigService;

import cn.com.doone.tx.cloud.system.utils.JsonUtils;

import cn.com.doone.tx.cloud.system.utils.ServerHeaderSyn;

import cn.com.doone.tx.cloud.system.utils.ServerRespSyn;

import cn.com.doone.tx.cloud.system.evt.RequestJsonEvt;

import cn.com.doone.tx.cloud.system.service.IntfConfigLogService;

import cn.com.doone.tx.cloud.tool.common.invoke.ServerResp;

import cn.com.doone.tx.cloud.tool.common.util.Md5Util;

import cn.com.doone.tx.cloud.tool.web.base.BaseController;

//v7系统同步接口

@Controller

@EnableAutoConfiguration

@RequestMapping("/intf")

public class IntfConfigController extends BaseController {

@Autowired

IntfConfigService intfConfigService;

@Autowired

IntfConfigLogService intfConfigLogService;

@RequestMapping("send")

@ResponseBody

public ServerRespSyn send(HttpServletRequest request) throws IOException {

ServerRespSyn respV7 = new ServerRespSyn<>();

ServerHeaderSyn respV7Header = new ServerHeaderSyn();

ServerResp respLogAdd = new ServerResp<>();

ServerResp resp = new ServerResp<>();

HashMap pram = new HashMap();

// 读取请求内容

BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));

String line = null;

StringBuilder sb = new StringBuilder();

while ((line = br.readLine()) != null) {

sb.append(line);

}

// 将资料解码

String reqBody = sb.toString();

String str = URLDecoder.decode(reqBody, HTTP.UTF_8);

RequestJsonEvt jsonEvt = JsonUtils.fromJson(str, RequestJsonEvt.class);

Map head = jsonEvt.getHead();

Map body = jsonEvt.getBody();

String sysSecret="GRD01";

String signMy =head.get("sysCode").toString()+head.get("intfCode").toString()+ sysSecret +head.get("reqTime").toString();

String sign = head.get("sign").toString();

for (Object m: body.values()) {

signMy=signMy+ JsonUtils.toJson(m);

}

try {

ServerResp respConfigList = intfConfigService.getIntfConfigList(pram);

List> list = (List>) respConfigList.getBody();

if (Md5Util.MD5(signMy).equals(sign)) {

for (LinkedHashMap linkedHashMap : list) {

if (head.get("intfCode").equals(linkedHashMap.get("intfCode"))){

HashMap pramLog = new HashMap();

HashMap pramLog1 = new HashMap();

LinkedHashMap mapLog = new LinkedHashMap<>();

try {

pramLog.put("callSystemCode", "V7");

pramLog.put("intfSystemCode", "CRM");

pramLog.put("intfUrl",linkedHashMap.get("intfUrl"));

pramLog.put("intfName",linkedHashMap.get("intfName"));

pramLog.put("intfCode", linkedHashMap.get("intfCode"));

pramLog.put("intfParamsIn",str );

pramLog.put("creator", 4);

pramLog.put("operator",4);

respLogAdd = intfConfigLogService.addLog(pramLog);

mapLog = (LinkedHashMap) respLogAdd.getBody();

resp = intfConfigService.doSend(body, linkedHashMap.get("intfUrl").toString());

if(resp.isSuccess()) {

pramLog1.put("id", mapLog.get("id"));

pramLog1.put("resDesc", "调用成功");

pramLog1.put("status", resp.getHead().getRespCode());

pramLog1.put("intfParamsOut",JsonUtils.toJson(resp));

SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS");

String resTime = formatter.format(new Date());

respV7Header.setResTime(resTime);

respV7Header.setRespCode(0);

respV7Header.setSign(sign);

respV7Header.setRespMsg(resp.getHead().getRespMsg());

respV7.setHead(respV7Header);

respV7.setBody(resp.getBody());

}else {

pramLog1.put("id", mapLog.get("id"));

pramLog1.put("resDesc", resp.getHead().getRespMsg());

pramLog1.put("status", resp.getHead().getRespCode());

pramLog1.put("intfParamsOut",JsonUtils.toJson(resp));

SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS");

String resTime = formatter.format(new Date());

respV7Header.setResTime(resTime);

respV7Header.setRespCode(1);

respV7Header.setSign(sign);

respV7Header.setRespMsg(resp.getHead().getRespMsg());

respV7.setHead(respV7Header);

respV7.setBody(resp.getBody());

}

} catch (Exception e) {

pramLog1.put("id", mapLog.get("id"));

pramLog1.put("resDesc", "调用失败");

pramLog1.put("status", "-1");

pramLog1.put("intfParamsOut",e.getMessage());

SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS");

String resTime = formatter.format(new Date());

respV7Header.setResTime(resTime);

respV7Header.setRespCode(1);

respV7Header.setSign(sign);

respV7Header.setRespMsg(resp.getHead().getRespMsg());

respV7.setHead(respV7Header);

respV7.setBody(e.getMessage());

}finally {

intfConfigLogService.editLog(pramLog1);

}

}

}

}else {

SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS");

String resTime = formatter.format(new Date());

respV7Header.setResTime(resTime);

respV7Header.setRespCode(1);

respV7Header.setSign(sign);

respV7Header.setRespMsg("调用失败");

respV7.setHead(respV7Header);

respV7.setBody("安全验签不一致");

}

} catch (Exception e) {

e.printStackTrace();

SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS");

String resTime = formatter.format(new Date());

respV7Header.setResTime(resTime);

respV7Header.setRespCode(1);

respV7Header.setSign(sign);

respV7Header.setRespMsg("调用失败");

respV7.setHead(respV7Header);

respV7.setBody(e.getMessage());

}

return respV7;

}

}

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值