Java实现HttpGet和HttpPost请求
maven引入JSON处理jar
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
maven引入数据源配置,用于log记录
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.0</version>
</dependency>
HttpGet和HttpPost请求
import com.alibaba.druid.support.logging.Log;
import com.alibaba.druid.support.logging.LogFactory;
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.SQLOutput;
import java.util.Map;
public class ReqHttp {
private static final Log logger = LogFactory.getLog(ReqHttp.class);
public static JSONObject get(String reqUrl,Map<String,Object> paramMap) throws IOException {
StringBuffer param =new StringBuffer();
for(Map.Entry<String,Object> en:paramMap.entrySet()){
param.append(en.getKey()+"="+en.getValue()+"&");
}
BufferedReader responseReader = null;
String urlPath = ReqStatUrl.DOMAIN_URL + reqUrl+"?"+param.toString();
try {
//建立连接
URL url = new URL(urlPath);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
//设置参数
httpConn.setDoOutput(true); //需要输出
httpConn.setDoInput(true); //需要输入
httpConn.setUseCaches(false); //不允许缓存
httpConn.setRequestMethod("GET"); //设置GET方式连接
httpConn.setRequestProperty("Content-Type", "application/json;charset=utf-8");//流信息 可以传输图片音频等信息
httpConn.setRequestProperty("Charset", "UTF-8");
httpConn.setRequestProperty("entCode", ReqStatHeader.entCode);//参数常量
httpConn.setRequestProperty("tokenId", ReqStatHeader.tokenId);//参数常量
httpConn.setConnectTimeout(30000);
httpConn.setReadTimeout(30000);
//连接,也可以不用明文connect,使用下面的httpConn.getOutputStream()会自动connect
httpConn.connect();
//获得响应状态
int resultCode = httpConn.getResponseCode();
if (HttpURLConnection.HTTP_OK == resultCode) {
StringBuffer sb = new StringBuffer();
String readLine = new String();
responseReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "UTF-8"));
while ((readLine = responseReader.readLine()) != null) {
sb.append(readLine).append("\n");
}
System.out.println(sb.toString());
logger.info(sb.toString());
JSONObject json = JSONObject.parseObject(sb.toString(),JSONObject.class);
return json;
}
} catch (Exception e) {
logger.error("get 请求失败:"+urlPath);
} finally {
if(null != responseReader) responseReader.close();
}
return null;
}
public static JSONObject post(String reqUrl,Map<String,Object> paramMap) throws Exception {
BufferedReader responseReader = null;
OutputStream dos= null;
String urlPath = ReqStatUrl.DOMAIN_URL + reqUrl;
try {
//建立连接
URL url = new URL(urlPath);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
//设置参数
httpConn.setDoOutput(true); //需要输出
httpConn.setDoInput(true); //需要输入
httpConn.setUseCaches(false); //不允许缓存
httpConn.setRequestMethod("POST"); //设置POST方式连接
httpConn.setRequestProperty("Content-Type", "application/json;charset=utf-8");//流信息 可以传输图片音频等信息
httpConn.setRequestProperty("Charset", "UTF-8");
httpConn.setRequestProperty("entCode", ReqStatHeader.entCode);//参数常量
httpConn.setRequestProperty("tokenId", ReqStatHeader.tokenId);//参数常量
httpConn.setConnectTimeout(30000);
httpConn.setReadTimeout(30000);
//连接,也可以不用明文connect,使用下面的httpConn.getOutputStream()会自动connect
httpConn.connect();
//建立输入流,向指向的URL传入参数
byte[] jsonObject = JSONObject.toJSONBytes(paramMap);
dos = httpConn.getOutputStream();
dos.write(jsonObject);
dos.flush();
//获得响应状态
int resultCode = httpConn.getResponseCode();
if (HttpURLConnection.HTTP_OK == resultCode) {
StringBuffer sb = new StringBuffer();
String readLine = new String();
responseReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "UTF-8"));
while ((readLine = responseReader.readLine()) != null) {
sb.append(readLine).append("\n");
}
// System.out.println(sb.toString());
logger.info(sb.toString());
JSONObject json = JSONObject.parseObject(sb.toString(),JSONObject.class);
return json;
}
} catch (Exception e) {
logger.error("get 请求失败:"+urlPath);
} finally {
if(null != responseReader) responseReader.close();
if(null != dos) dos.close();
}
return null;
}
}
常用参数静态引用
public class ReqStatHeader {
public static String entCode="";
public static String tokenId="";
public static String appCode = "";
public static String secret = "";
}
常用API地址静态引用,便于地址维护
public class ReqStatUrl {
public static String DOMAIN_URL = "https://www.xxxxx.com/xxxx/xxxx";
/**
* 认证
*/
public static String AUTH_LOGIN = "/auth/login";
/**
*获取已提交对私报销单据
*/
public static String REPORT_PERSONAL_SUBMITTED= "/report/personal/submitted";
/**
* 获取已提交对私报销单据详情
*/
public static String REPORT_PERSONAL_DETAIL = "/report/personal/detail";
}
Java实现HttpGet和HttpPost请求的更多相关文章
- java最简单的方式实现httpget和httppost请求
java实现httpget和httppost请求的方式多种多样,个人总结了一种最简单的方式,仅仅需几行代码,就能够完美的实现. 此处须要用到两个jar包,httpclient-4.3.1.jar.ht ...
- Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)
Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件) 一.HttpPost上传文件 public static String getSuffix(fi ...
- Java后台使用httpclient入门HttpPost请求(form表单提交,File文件上传和传输Json数据)
一.HttpClient 简介 HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 ...
- HttpGet/HttpPost请求方法
/// <summary> /// HttpGet请求 /// </summary> /// <param name="url">HttpGet ...
- httpPost请求用java代码实现的方法
原文:https://www.cnblogs.com/johnson-yuan/p/6713384.html package com.day3.sample; //首先下面我我们需要导入的jar包和文 ...
- 【SpringBoot】 Java中如何封装Http请求,以及JSON多层嵌套解析
前言 本文中的内容其实严格来说不算springboot里面的特性,属于JAVA基础,只是我在项目中遇到了,特归纳总结一下. HTTP请求封装 目前JAVA对于HTTP封装主要有三种方式: 1. JAV ...
- 转-浅谈HTTP-GET 、 HTTP-POST 和SOAP
HTTP-GET 和 HTTP-POST HTTP-GET和HTTP-POST是标准协议,他们使用HTTP(超文本传输协议)谓词(谓词是指条件表达式的求值返回真或假的过程.)对参数金星编码并将参数作为 ...
- HTTPClient模块的HttpGet和HttpPost
HttpClient常用HttpGet和HttpPost这两个类,分别对应Get方式和Post方式. 无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源. 1.创 ...
- HttpGet和HttpPost的区别
HttpGet和HttpPost的区别总结就是下面这样: Get一般用于从服务器取数据,而且不改变原来的内容: Post一般用于向服务器传递数据,这需要改变服务器的内容. 从安全性上考虑,Get的安全 ...
随机推荐
- Spring Cloud Gateway自定义过滤器实战(观测断路器状态变化)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- [luogu5564]Say Goodbye
两树相同的定义与题中相同,并定义两树完全相同当且仅当在不允许基环旋转的条件下相同 枚举基环的长度$l$,根据置换群的理论,答案即$\frac{1}{l}\sum_{i=1}^{l}f(i)$(其中$f ...
- 十.Go并发编程--channel使用
一.设计原理 Go 语言中最常见的.也是经常被人提及的设计模式就是: "不要通过共享内存来通信,我们应该使用通信来共享内存" 通过共享内存来通信是直接读取内存的数据,而通过通信来共 ...
- Docker 急速入门
1. 概述 之前聊了很多 SpringCloud 相关的话题,今天我们来聊聊服务容器 Docker. 2. 在 CentOS7 安装 Docker 2.1 卸载旧版本的Docker # yum re ...
- Apache发布支持Java EE微服务的Meecrowave服务器
Apache OpenWebBeans团队希望通过使服务器适应用户来消除复杂性.所以,该团队发布了Apache Meecrowave项目1.0版. Apache Meecrowave是一款小型服务器, ...
- Codeforces 436E - Cardboard Box(贪心/反悔贪心/数据结构)
题面传送门 题意: 有 \(n\) 个关卡,第 \(i\) 个关卡玩到 \(1\) 颗星需要花 \(a_i\) 的时间,玩到 \(2\) 颗星需要 \(b_i\) 的时间.(\(a_i<b_i\ ...
- SQLite3 约束和简单命令
安装sqlite3,配置环境变量. 1.打开数据库 sqlite3.exe db_name.db 2.常用命令 .tables 查看所有表 .headers on 设置显示表头 .schema tab ...
- Linux命令行批量删除文件(目录)
快速-批量删除文件或目录 1-1.快速删除大文件夹(注意目录后的结束符'/')(对于含有海量文件的目录,不能直接rm -rf删除,这样效率很慢:) rsync -a --delete blank/ t ...
- js浮点运算的坑
1,js浮点型小数点运算的问题. 这么简单的计算,js竟然算的是错的,究其原因,是因为js小数在内存存储方式的原因. 具体原因: JavaScript 里的数字是采用 IEEE 754 标准的 64 ...
- 自动化测试系列(二)|API测试
在上次的自动化测试系列(一)中为大家大体介绍了自动化测试的概念,本文主要针对API测试的概念及API测试在猪齿鱼Choerodon中的实践展开. API(应用程序编程接口)测试是一种软件测试,可以直接 ...