0

0

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

php是最好的语言

php是最好的语言

发布时间:2018-08-09 15:23:04

|

2845人浏览过

|

来源于php中文网

原创

发起请求:

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;
	}
}

相关推荐:

想做一上PHP调用java webservice接口的例子,但是.

Andi
Andi

智能搜索助手,可以帮助解决详细的问题

下载

java直接调用python脚本的例子

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

22

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

24

2026.01.23

yy漫画官方登录入口地址合集
yy漫画官方登录入口地址合集

本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

99

2026.01.23

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

132

2026.01.23

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

15

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

65

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

61

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

63

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.9万人学习

Django 教程
Django 教程

共28课时 | 3.4万人学习

Kotlin 教程
Kotlin 教程

共23课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号