基于HttpURLConnection的接口调用,支持GET&POST
单位要做一个多级部署平台,大概意思就是一级系统可以监控下属地域的数据也可管理本地的数据。之前做短信猫用过httpClient请求,与此大同小异。封装了一个两种请求方式的工具类。
package com.subordinate.util; import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry; /**
* 接口调用工具类
* 目前支持 GET POST请求两种方式
*
* @author Together
*
*@date 2018年4月17日
*/
public class HttpURLConnectionUtil { /**
* get请求
*
* @param url
* @param param
* @return
*/
public static String get(String url,Map<String, Object> param) {
StringBuilder builder=new StringBuilder();
try {
StringBuilder params=new StringBuilder();
for(Entry<String, Object> entry:param.entrySet()){
params.append(entry.getKey());
params.append("=");
params.append(entry.getValue().toString());
params.append("&");
}
if(params.length()>){
params.deleteCharAt(params.lastIndexOf("&"));
}
URL restServiceURL = new URL(url+(params.length()> ? "?"+params.toString() : ""));
HttpURLConnection httpConnection = (HttpURLConnection) restServiceURL.openConnection();
httpConnection.setRequestMethod("GET");
httpConnection.setRequestProperty("Accept", "application/json");
if (httpConnection.getResponseCode() != ) {
throw new RuntimeException("HTTP GET Request Failed with Error code : "
+ httpConnection.getResponseCode());
}
InputStream inStrm = httpConnection.getInputStream();
byte []b=new byte[];
int length=-;
while((length=inStrm.read(b))!=-){
builder.append(new String(b,,length));
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
/**
* post 请求
*
* @param url
* @param param
* @return
*/
public static String post(String url,Map<String, Object> param) {
StringBuilder builder=new StringBuilder();
try {
StringBuilder params=new StringBuilder();
for(Entry<String, Object> entry:param.entrySet()){
params.append(entry.getKey());
params.append("=");
params.append(entry.getValue().toString());
params.append("&");
}
if(params.length()>){
params.deleteCharAt(params.lastIndexOf("&"));
}
URL restServiceURL = new URL(url+(params.length()> ? "?"+params.toString() : ""));
HttpURLConnection httpConnection = (HttpURLConnection) restServiceURL.openConnection();
httpConnection.setRequestMethod("POST");
httpConnection.setRequestProperty("Accept", "application/json");
// 设置是否从httpUrlConnection读入,默认情况下是true;
httpConnection.setDoInput(true);
// Post 请求不能使用缓存
httpConnection.setUseCaches(false);
if (httpConnection.getResponseCode() != ) {
throw new RuntimeException("HTTP POST Request Failed with Error code : "
+ httpConnection.getResponseCode());
}
InputStream inStrm = httpConnection.getInputStream();
byte []b=new byte[];
int length=-;
while((length=inStrm.read(b))!=-){
builder.append(new String(b,,length));
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
} public static void main(String[] args) {
String urlString="http://localhost:8080/vms/subordinate/testController/test";
Map<String, Object> param=new HashMap<String, Object>();
param.put("userId", "");
param.put("pa", "hello");
HttpURLConnectionUtil.get(urlString, param);
HttpURLConnectionUtil.post(urlString, param);
}
}
基于HttpURLConnection的接口调用,支持GET&POST的更多相关文章
- 基于JAVA的全国天气预报接口调用示例
step1:选择本文所示例的接口"全国天气预报接口" url:https://www.juhe.cn/docs/api/id/39/aid/87step2:每个接口都需要传入一个参 ...
- 基于excel的接口自动化测试框架:支持参数化、关联等
1. 框架结构说明 2. 框架代码实现 action 包 case_action.py business_process 包 main_process.py util 包 global_var.py ...
- java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)
项目开发中难免遇到外部接口的调用,小生今天初次接触该类,跟着API方法走了一遍,如有不对的地方,还请哆哆指正,拜谢! 1 package com.cplatform.movie.back.test; ...
- delphi不同版本字符串类型的演化(要支持基于firemonkey的app调用,字符串最好使用olevariant类型)
string,DELPHI2009以前的版本string=ansistring,一个字符占一个字节,DELPHI2009及以上版本string=unicodestring,一个字符占二个字节. cha ...
- 关于公众平台接口不再支持HTTP方式调用的公告
为保证数据传输安全,提高业务安全性,公众平台将不再支持HTTP方式调用.避免影响正常使用中含有HTTP方式调用的服务,请开发者尽快调整,将现有通过HTTP方式调用的切换成HTTPS调用,平台将于201 ...
- 咏南中间件开始支持redis client接口调用
咏南中间件开始支持redis client接口调用 咏南中间件封装了redis client接口,可以支持REDIS了. 如下图,将数据集写入REDIS缓存,和从REDIS缓存获取数据: proced ...
- 基于Axis1.4的webservice接口开发(接口调用)
基于Axis1.4的webservice接口开发(接口调用) 一.webservice接口代码参考上一篇博客: http://www.cnblogs.com/zhukunqiang/p/7125668 ...
- Http请求之基于HttpUrlConnection,支持Header,Body传值,支持Multipart上传文件:
Http请求之基于HttpUrlConnection,支持Header,Body传值,支持Multipart上传文件: public static String post(String actionU ...
- 基于MD5+RSA算法实现接口调用防扯皮级鉴权
概述 最近项目中需要对第三方开发接口调用,考虑了一下,准备采用MD5+RSA算对请求数据进行签名,来达到请求鉴权,过滤非法请求的目标. 数字签名采用MD5+RSA算法实现.RSA私钥要严格保密并提供安 ...
随机推荐
- django restful 序列化
https://www.cnblogs.com/wt7018/p/11456440.html https://www.cnblogs.com/wt7018/p/11530962.html
- 异数OS 2017 DPDK 峰会观后感
1.DPDK in Container 使用虚拟网卡设备技术为每一个容器分配一个IP 网卡适配器(queue).容器技术可以解决虚拟机技术中虚拟机过于臃肿,难于热迁移的问题,可能可以代替美团OVS方案 ...
- Browser Security-同源策略、伪URL的域
同源策略 同源策略的文档模型 同源策略(Same Origin policy,SOP),也称为单源策略(Single Origin policy),它是一种用于Web浏览器编程语言(如JavaScri ...
- Python学习,第三课 - 数据类型
前言. 本次针对Python中的数据类型,做详细的总结 1.数字 2 是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E- ...
- Java 8 Stream流编程学习
本文是自己学习菜鸟教程中总结的笔记,用于快速找代码,完整的文档见菜鸟教程:Java 8 Stream Stream 使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达 ...
- 工具之cut
转自http://www.cnblogs.com/dong008259/archive/2011/12/09/2282679.html cut:正如其名就是“剪”,和sed一样,一行为单位,对数据进行 ...
- 基于快排思想的第(前)k大(小)
算法思路就是根据快排的partition,先随机选择一个分隔元素(或a[0]),将数组分为[小于a[p]的元素] a[p] [大于a[p]的元素],如果这时候n-p+1等于k的话,a[p]就是所求的第 ...
- CTF--HTTP服务--命令执行
开门见山 1. 扫描靶机ip,发现PCS 172.18.5.1 2. 用nmap扫描靶机开放服务和服务版本 3. 再扫描靶机全部信息 4. 用nikto工具扫描http服务的敏感信息 5. 打开浏览器 ...
- learn more ,study less(二):整体性学习技术(上)
前言:在学习整体性学习概念时,一个很好的方法是把它比喻成下棋,首先你要了解下棋的 基本规则和基本目标,本书第一部分可以看做是介绍关于整体性学习的一整套规则和目标. 一旦你理解了下棋的基本规则,你就要开 ...
- layui数据表格及分页
一.前端部分 html只需要放一个有id的div就行了,方便js获取渲染区域 <div id="data_grid" lay-filter="demo" ...