单位要做一个多级部署平台,大概意思就是一级系统可以监控下属地域的数据也可管理本地的数据。之前做短信猫用过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的更多相关文章

  1. 基于JAVA的全国天气预报接口调用示例

    step1:选择本文所示例的接口"全国天气预报接口" url:https://www.juhe.cn/docs/api/id/39/aid/87step2:每个接口都需要传入一个参 ...

  2. 基于excel的接口自动化测试框架:支持参数化、关联等

    1. 框架结构说明 2. 框架代码实现 action 包  case_action.py business_process 包 main_process.py util 包 global_var.py ...

  3. java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)

    项目开发中难免遇到外部接口的调用,小生今天初次接触该类,跟着API方法走了一遍,如有不对的地方,还请哆哆指正,拜谢! 1 package com.cplatform.movie.back.test; ...

  4. delphi不同版本字符串类型的演化(要支持基于firemonkey的app调用,字符串最好使用olevariant类型)

    string,DELPHI2009以前的版本string=ansistring,一个字符占一个字节,DELPHI2009及以上版本string=unicodestring,一个字符占二个字节. cha ...

  5. 关于公众平台接口不再支持HTTP方式调用的公告

    为保证数据传输安全,提高业务安全性,公众平台将不再支持HTTP方式调用.避免影响正常使用中含有HTTP方式调用的服务,请开发者尽快调整,将现有通过HTTP方式调用的切换成HTTPS调用,平台将于201 ...

  6. 咏南中间件开始支持redis client接口调用

    咏南中间件开始支持redis client接口调用 咏南中间件封装了redis client接口,可以支持REDIS了. 如下图,将数据集写入REDIS缓存,和从REDIS缓存获取数据: proced ...

  7. 基于Axis1.4的webservice接口开发(接口调用)

    基于Axis1.4的webservice接口开发(接口调用) 一.webservice接口代码参考上一篇博客: http://www.cnblogs.com/zhukunqiang/p/7125668 ...

  8. Http请求之基于HttpUrlConnection,支持Header,Body传值,支持Multipart上传文件:

    Http请求之基于HttpUrlConnection,支持Header,Body传值,支持Multipart上传文件: public static String post(String actionU ...

  9. 基于MD5+RSA算法实现接口调用防扯皮级鉴权

    概述 最近项目中需要对第三方开发接口调用,考虑了一下,准备采用MD5+RSA算对请求数据进行签名,来达到请求鉴权,过滤非法请求的目标. 数字签名采用MD5+RSA算法实现.RSA私钥要严格保密并提供安 ...

随机推荐

  1. Springboot + 持久层框架JOOQ

    简介 官网链接 JOOQ是一套持久层框架,主要特点是: 逆向工程,自动根据数据库结构生成对应的类 流式的API,像写SQL一样 提供类型安全的SQL查询,JOOQ的主要优势,可以帮助我们在写SQL时就 ...

  2. 可视化限流管理,Sentinel 控制台启动和接入

    Sentinel 的使用可以分为核心库和控制台两个部分. 核心库不依赖任何框架/库,集成了主流框架,可以进行单机限流降级等功能, 控制台Dashboard提供了可视化的管理限流规则.对集群进行监控,集 ...

  3. 06hive企业调优

    一.Fetch抓取 Fetch抓取是指,Hive 中对某些情况的查询可以不必使用MapReduce计算. 在 hive-default.xml.template 文件中 hive.fetch.task ...

  4. 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一)(条件构造器)

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询 代码下载:ht ...

  5. NOI2.5 8465:马走日

    描述 马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. 输入 第一行为整数T ...

  6. Ubuntu学习之路2

    由于数据越来越多,学习的也稍微多了点,故将一步一步学习到的命令和快捷键继续到这篇博客. 1. 查看隐藏文件和文件夹 Ctrl+H 2. 打开搜索管理器 Alt+F2 3. 查看系统内存 free -h ...

  7. BOM DOM 注意事項

    setTimeout(js,時間)  js处 应该放一个函数 不能放 alert  confirm 等 (否则延时会失效) setTimeout()   和 setInterval() 的区别:    ...

  8. Charles的安装及使用过程

    一.charles的使用 1.1  charles的说明 Charles其实是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的.该 ...

  9. ubuntu18.04编译jdk8

    准备编译环境 sudo apt-get install -y zip unzip build-essential libx11-dev libxext-dev libxrender-dev libxt ...

  10. spring实战第二章小记-装配bean

    时间:2020/02/06 一.思想 1.创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入(DI)的本质. 对于上面这句话的个人理解:当我们在new一个对象时如果传入了别的对象作为参数(这个 ...