博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java调用http接口(HttpURLConnection的使用)
阅读量:6880 次
发布时间:2019-06-27

本文共 5740 字,大约阅读时间需要 19 分钟。

hot3.png

最近项目的一个模块,需要调用另一个项目的接口, 找到以前写的的,发现太粗略了,就扒了扒网上诸大神的笔记,整理了一份进阶版的代码,方便以后使用。如果不合理的地方,忘指教,共同学习,共同进步!废话不多说,直接上代码。

import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.sql.SQLException;import java.util.Map;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import cn.com.easy.annotation.Controller;import cn.com.easy.core.sql.SqlRunner;import net.sf.json.JSONObject;/** * @Title: HttpTestAction.java * @Package  * @Description: java调用http接口 * @version V1.0 */public class HttpTestAction{	private static SqlRunner runner;	private static final Log LOG = LogFactory.getLog(HttpTestAction.class);		public static JSONObject load(String url,String data){		String encoding = "UTF-8";	    HttpURLConnection httpConnection = null;	    PrintWriter printWriter = null;//        StringBuilder stringBuilder = new StringBuilder(); // 用来存储响应数据        InputStream inputStream = null;        BufferedReader bufferedReader = null;        JSONObject resultJson = null;		try {            URL targetUrl = new URL(url);            // 新建链接实例            httpConnection = (HttpURLConnection) targetUrl.openConnection();            // 设置链接超时时间,单位毫秒            httpConnection.setConnectTimeout(2000);            // 设置读取数据超时时间,单位毫秒            httpConnection.setReadTimeout(2000);            // 是否打开输出流true|false            httpConnection.setDoOutput(true);            httpConnection.setDoInput(true);            // 设置提交方法 POST|GET            httpConnection.setRequestMethod("POST");            // 是否使用缓存true|false            httpConnection.setUseCaches(false);            httpConnection.setRequestProperty("Accept-Charset", encoding);            // 标准的HTTP POST是一种application/x-www-form-urlencoded 类型的网络表单,传递的参数都会被写入请求信息主体中            // httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset="+encoding);            httpConnection.setRequestProperty("Content-Type", "application/json");                        // 建立连接 (请求未开始,直到connection.getInputStream()方法调用时才发起,以上各个参数设置需在此方法之前进行)            httpConnection.connect();            //获取URLConnection对象对应的输出流            printWriter = new PrintWriter(httpConnection.getOutputStream());            //发送请求参数即数据            printWriter.print(data);            // 输出完成后刷新并关闭流            printWriter.flush();            printWriter.close();                        // 这里返回200,则是成功调用接口,否则失败            if(httpConnection.getResponseCode()==200){            	// 得到响应流            	inputStream = httpConnection.getInputStream();            	// 处理服务器响应  (将从连接获取到输入流包装为bufferedReader)            	bufferedReader = new BufferedReader(new InputStreamReader(inputStream,encoding));             	String line;            	// 循环读取流,若不到结尾处            	while ((line = bufferedReader.readLine()) != null) {            		stringBuilder.append(line);            	}            	//关闭流            	bufferedReader.close();             	inputStream.close();            }else{            	stringBuilder.append("{\"success\":\"false\",\"message\":\"调用http接口失败!\"}");            }                        // 关闭连接            httpConnection.disconnect();             // 转换成json对象            resultJson = JSONObject.fromObject(stringBuilder.toString());		}catch(Exception e){			e.printStackTrace();		}finally{			if(printWriter!=null){				printWriter.close();			}			if(httpConnection!=null){				httpConnection.disconnect();			}		}        return resultJson;	}    /**     * 这里是本人进行的调试,作为记录使用,仅供参考     */	public static void main(String[] args) throws Exception {		// http接口地址		String urlHead = "http://127.0.0.1:8089/bpm/bpmservice";		// 流程模板编码		String modelKey = "HR_INTEGRAL_EXCHANGEPLAN_APPLY";		//String applyId = initApplyId();		// 流程申请编码		String applyId = "QJ-20190312105823001";		// 流程发起人编码		String loginId = "admin";		// 流程接收人编码		String staffCode = "10001";		//URLEncoder.encode()方法  为字符串进行编码		String userName = URLEncoder.encode("管理员","UTF-8");							// 1:新建流程		JSONObject result1 = load(urlHead+"/process/startProcessByModelKey?loginId="+loginId+"&modelKey="+modelKey,"{applyId:'"+applyId+"',userName:'"+userName+"',staffCode:'"+staffCode+"'}");		System.out.println("processInstanceId:"+result1.get("processInstanceId"));		if(result1.getString("success")=="true"){			// 2:根据流程实例获取待办任务id			JSONObject result2 = load(urlHead+"/worktask/getUserTaskByPId?loginId="+staffCode+"&processInstanceId="+result1.get("processInstanceId"),"");			System.out.println("taskId:"+result2.get("taskId"));						if(result2.getString("success")=="true"){				// 3:根据流程id获取流程信息				JSONObject result3 = load(urlHead+"/worktask/getTaskDealInfo?loginId="+staffCode+"&taskId="+result2.get("taskId"),"");				String array = result3.getString("taskDealInfo");				JSONObject result4 = JSONObject.fromObject(array);				System.out.println("formUrl:"+result4.get("formUrl"));								if(result4.getString("success")=="true"){					// 4:拼接待办页面url					String formUrl = result4.get("formUrl")+"?applyId="+applyId+"&flowInstId="+result1.get("processInstanceId")+"&taskId="+result2.get("taskId");					System.out.println("待办页面url:"+formUrl);				}			}		}	}		public static String initApplyId(){		// 获取当前时间当做任务编码的sql		String sql = runner.sql("hr.integralManagement.getSystem");		Map
map; String applyId = ""; try { map = runner.queryForMap(sql); if(map.get("APPLYID") != null&& !("").equals(map.get("APPLYID"))){ applyId = "QJ-"+map.get("APPLYID"); } } catch (SQLException e) { e.printStackTrace(); } return applyId; }}

吐槽一下:HTML编辑器太不好用了,插入一段java代码,格式都乱了,调了几次,还是这样,明明编辑的时候格式也是对的,但是发布后就成了这个鬼样子,什么情况

转载于:https://my.oschina.net/shuming/blog/3028000

你可能感兴趣的文章
WannaCry病毒提醒CIO要掌握打补丁
查看>>
昂纳科技2016年营收15.98亿港元 数据中心业务大增409%
查看>>
国内首个商用固移融合视频业务用户数破200万
查看>>
三星高管:家电业务将实行并购策略 海尔并购案影响小
查看>>
微软重调对处理器的技术支持 都怪你不升Win10?
查看>>
为何还处于概念阶段的智能家居被3.15点名批评
查看>>
捷克光伏电站的装机容量为何停滞不前?
查看>>
CipherLab展出NFC安卓电脑,UHF RFID蓝牙读取器
查看>>
产品经理的新三观:数据观、格局观、细节观
查看>>
大数据技术服务商个推获4亿人民币D轮融资
查看>>
Centos命令系列 之 screen
查看>>
Mac OS X版本的sublime text 3安装汇编语言语法支持
查看>>
Git的详细使用教程
查看>>
[sync4j]Nokia手机和sync4j服务器同步的第四次手机登录,手工新建了syncSource同步源...
查看>>
Java锁的种类以及辨析(三):阻塞锁
查看>>
谈谈游戏服务器的发送数据处理
查看>>
Cocos2D iOS之旅:如何写一个敲地鼠游戏(七):弹出地鼠
查看>>
MySQL · 引擎特性 · InnoDB 事务锁简介
查看>>
Android 逃离adapter的地狱-针对多个View type的组合实现方案
查看>>
鏖战双十一-阿里直播平台面临的技术挑战
查看>>