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的安全 ...
随机推荐
- dart系列之:在dart中使用数字和字符串
目录 简介 数字 字符串 StringBuffer 总结 简介 要想熟悉一种语言,最简单的做法就是熟悉dart提供的各种核心库.dart为我们提供了包括dart:core,dart:async,dar ...
- 下载安装wps后去除监控
下载wps之后发现wps一直对我的电脑进行监控,占用着我的cpu和内存,我要把它清理出去.... 控制面板→管理工具→任务计划程序→任务计划程序库,有两个wps的任务计划,可以根据属性看到文件地址 C ...
- 最强最全面的Hive SQL开发指南,超四万字全面解析
本文整体分为两部分,第一部分是简写,如果能看懂会用,就直接从此部分查,方便快捷,如果不是很理解此SQL的用法,则查看第二部分,是详细说明,当然第二部分语句也会更全一些! 第一部分: hive模糊搜索表 ...
- 从一个简单的Delete删数据场景谈TiDB数据库开发规范的重要性
故事背景 前段时间上线了一个从Oracle迁移到TiDB的项目,某一天应用端反馈有一个诡异的现象,就是有张小表做全表delete的时候执行比较慢,而且有越来越慢的迹象.这个表每次删除的数据不超过20行 ...
- Codeforces 1476G - Minimum Difference(带修莫队+根号平衡)
Codeforces 题目传送门 & 洛谷题目传送门 震惊!我竟然独立切掉了这道 *3100 的题! 虽然此题难度的确虚高,感觉真实评分也就 2800~2900 罢.但感觉还是挺有成就感的( ...
- 金蝶EAS——客户端打开时,提示正在更新的文件d:\eas\client\bin\lib\proxy.jar被其他应用程序占用.请关闭
解决办法: 一.通过调用任务管理器来退出,启用任务管理器需同时按下键Ctrl+Alt+Del,在应用程序中找到金蝶EAS,单击,选择结束任务即可:或者在任务管理器中选择"进程",点 ...
- MySQL_集群
管理节点:192.168.31.66 sql节点1+data1节点:192.168.31.42 sql节点2+data2节点:192.168.31.128 llll
- Excel-姓名列中同一个人汇总金额列,得出总金额
8.姓名列中同一个人求和金额列,得出总金额. 方法一: P2处公式=SUMPRODUCT(($M$2:$M$20=$M2)*($N$2:$N$20)) 解释函数: 引用:https://zhinan. ...
- chmod文件权限分配问题
一. 文件(文件夹)的权限问题 一个文件或者文件夹,使用它的人有三类:root.当前用户和其他用户,例如,我们可以通过 ls -l xxx.xxx 来查看文件 "xxx.xxx" ...
- [转载]ORA-02287: 此处不允许序号
原文地址:ORA-02287: 此处不允许序号作者:nowhill 转载自 http://blog.sina.com.cn/s/blog_6d496bad01011dyv.html 开发人员反映序列不 ...