OkHttp3发送http请求
导入依赖
<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.10.0</version>
</dependency>
工具类
package com.ly.uitls;
import okhttp3.*;
import org.springframework.util.CollectionUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Map;
/**
* @author : ly
*/
public class OkHttpClientUtil {
private final static OkHttpClient okHttpClient = new OkHttpClient();
/**
* get请求
*
* @param url
* @param headerMap
* @return
* @throws Exception
*/
public static String get(String url, Map<String, String> headerMap) throws Exception {
Request.Builder builder = new Request.Builder().url(url);
if (!CollectionUtils.isEmpty(headerMap)) {
headerMap.forEach((name, value) -> builder.addHeader(name, value));
}
Request request = builder.build();
ResponseBody body = okHttpClient.newCall(request).execute().body();
return body.string();
}
/**
* @param url
* @return
*/
public static String getResult(String url) {
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Call call = okHttpClient.newCall(request);
try {
Response response = call.execute();
String string = response.body().string();
return string;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* get 请求
*
* @param url
* @param headerMap
* @return
* @throws Exception
*/
public static String getData(String url, Map<String, String> headerMap) throws Exception {
OkHttpClient okHttpClient = new OkHttpClient();
Request.Builder builder = new Request.Builder().url(url);
if (!CollectionUtils.isEmpty(headerMap)) {
headerMap.forEach((name, value) -> builder.addHeader(name, value));
}
Call call = okHttpClient.newCall(builder.build());
try {
Response response = call.execute();
String string = response.body().string();
return string;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* post 请求
*/
public static String postData(String url, String json, Map<String, String> headerMap) throws Exception {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json);
Request.Builder builder = new Request.Builder().url(url);
if (!CollectionUtils.isEmpty(headerMap)) {
headerMap.forEach(builder::addHeader);
}
Request request = builder.post(requestBody).build();
ResponseBody body = okHttpClient.newCall(request).execute().body();
return resolver(body);
}
public static String postUrlencoded(String url, String json, Map<String, String> headerMap) throws Exception {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"), json);
Request.Builder builder = new Request.Builder().url(url);
if (!CollectionUtils.isEmpty(headerMap)) {
headerMap.forEach(builder::addHeader);
}
Request request = builder.post(requestBody).build();
ResponseBody body = okHttpClient.newCall(request).execute().body();
return resolver(body);
}
public static InputStream postDataByPdf(String url, String json, Map<String, String> headerMap) throws Exception {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"), json);
Request.Builder builder = new Request.Builder().url(url);
if (!CollectionUtils.isEmpty(headerMap)) {
headerMap.forEach(builder::addHeader);
}
Request request = builder.post(requestBody).build();
ResponseBody body = okHttpClient.newCall(request).execute().body();
return body.byteStream();
}
/**
* put 请求
*
* @param url
* @param reqbody
* @param map
* @return
*/
public static String putData(String url, String reqbody, Map<String, String> map) {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), reqbody);
Request.Builder builder = new Request.Builder().url(url);
if (!CollectionUtils.isEmpty(map)) {
map.forEach((name, value) -> builder.addHeader(name, value));
}
Request request = builder.put(requestBody).build();
try {
ResponseBody body = okHttpClient.newCall(request).execute().body();
return resolver(body);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* delete 请求
*
* @param url
* @param reqbody
* @param map
* @return
*/
public static String deleteData(String url, String reqbody, Map<String, String> map) {
OkHttpClient okHttpClient = new OkHttpClient();
Request.Builder builder = new Request.Builder().url(url);
if (!CollectionUtils.isEmpty(map)) {
map.forEach((name, value) -> builder.addHeader(name, value));
}
Call call = okHttpClient.newCall(builder.build());
try {
Response response = call.execute();
String string = response.body().string();
return string;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 解析返回值
*
* @param responseBody
* @return
*/
private static String resolver(ResponseBody responseBody) {
InputStream is = null;
String result = null;
try {
is = responseBody.byteStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
String body = null;
StringBuilder sb = new StringBuilder();
while ((body = br.readLine()) != null) {
sb.append(body);
}
is.close();
result = sb.toString();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (is != null) {
is.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
}
OkHttp3发送http请求的更多相关文章
- 安卓中使用OkHttp发送数据请求的两种方式(同、异步的GET、POST) 示例-- Android基础
1.首先看一下最终效果的截图,看看是不是你想要的,这个年代大家都很忙,开门见山很重要! 简要说下,点击不同按钮可以实现通过不同的方式发送OkHttp请求,并返回数据,这里请求的是网页,所以返回的都是些 ...
- Android 的OkHttp(发送网络请求)
今天讲的是和HttpURLConnection差不多的OkHttp; 先把网站献上: 官网介绍okhttp的: https://square.github.io/okhttp/ 下载postman的: ...
- Java发送Http请求并获取状态码
通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断. try { URL u = new URL("http://10.1.2.8:8080/fqz/page ...
- AngularJs的$http发送POST请求,php无法接收Post的数据解决方案
最近在使用AngularJs+Php开发中遇到php后台无法接收到来自AngularJs的数据,在网上也有许多解决方法,却都点到即止.多番摸索后记录下解决方法:tips:当前使用的AngularJ ...
- Ajax发送POST请求SpringMVC页面跳转失败
问题描述:因为使用的是SpringMVC框架,所以想使用ModelAndView进行页面跳转.思路是发送POST请求,然后controller层中直接返回相应ModelAndView,但是这种方法不可 ...
- 使用HttpClient来异步发送POST请求并解析GZIP回应
.NET 4.5(C#): 使用HttpClient来异步发送POST请求并解析GZIP回应 在新的C# 5.0和.NET 4.5环境下,微软为C#加入了async/await,同时还加入新的Syst ...
- 在发送ajax请求时加时间戳或者随机数去除js缓存
在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳 大家在系统开发中都可能会在js中用到ajax或者dwr,因为IE的缓存,使得我们在填入相同的值的 ...
- HttpUrlConnection发送url请求(后台springmvc)
1.HttpURLConnection发送url请求 public class JavaRequest { private static final String BASE_URL = "h ...
- kattle 发送post请求
一.简介 kattle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,数据抽取高效稳定.它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述 ...
- 【荐】怎么用PHP发送HTTP请求(POST请求、GET请求)?
file_get_contents版本: <?php /** * 发送post请求 * @param string $url 请求地址 * @param array $post_data pos ...
随机推荐
- 为何 Linus 一个人就能写出这么强的系统,中国却做不出来?
前言 知乎上有一个提问:为何 Linus 一个人就能写出这么强的系统,中国却做不出来? ↓↓↓ 今天,我们就这个话题,一起来做个讨论. 不知道大家是怎么看这个问题的?是美国人更聪明吗,所以才能写出这么 ...
- 2-MySQL基本语法
上文说到,数据库的安装和连接,接下来将给大家讲解MySQL数据库的基本语法及数据的类型 1.基本语法 (1).查看当前所有数据库 : show databases; (2).创建数据库 create ...
- Spring注解之@ExceptionHandler 统一异常处理和获取方法名
摘要:在 Spring Boot 中,使用Spring注解@ControllerAdvice 和 @ExceptionHandler 统一处理异常,并捕获方法名,从而快速定位错误原因. 背景分析 ...
- Java 21 新特性:虚拟线程(Virtual Threads)
在Java 21中,引入了虚拟线程(Virtual Threads)来简化和增强并发性,这使得在Java中编程并发程序更容易.更高效. 虚拟线程,也称为"用户模式线程(user-mode t ...
- PLSQL_developer安装与配置
前言: 记录安装与配置操作 环境: 客户机:windows 服务器:虚拟机中的windows server 2003 /---------------------------------------- ...
- DBeaver Ultimate 22.1.0 连接数据库(MySQL+Mongo+Clickhouse)
前言 继续书接上文 Docker Compose V2 安装常用数据库MySQL+Mongo,部署安装好之后我本来是找了一个web端的在线连接数据库的工具,但是使用过程中并不丝滑,最终还是选择了使用 ...
- MySQL系列之——MySQL介绍和安装、MySQL简介及产品线、安装方式(源码安装 rpm方式 yum方式 通用二进制安装)
文章目录 一 MySQL介绍和安装 1.1 什么是数据? 1.2 什么是数据库管理系统(DBMS)? 1.3 数据库管理系统种类 二 MySQL简介及产品线 2.1 MySQL行业主流版本 2.2 企 ...
- Python基础——字符编码、文件处理
文章目录 字符编码 一 引入 二 知识储备 2.1 三大核心硬件 2.2 文本编辑器读取文件内容的流程 2.3 python解释器执行文件的流程 2.4 总结 三.字符编码介绍 3.1 什么是字符编码 ...
- linux的认知与基本命令
一.linux的了解 1. 什么是Linux? a,Linux是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布.它主要受到Mi ...
- 数据结构-线性表-单循环链表(使用尾指针)(c++)
目录 单循环链表 说明 注意 (一)无参构造函数 (二)有参构造函数 (三)析构函数 (四)获取长度 (五)打印数组 (六)获取第i个元素的地址 (七)插入 (八)删除 (九)获取值为x的元素的位置 ...