导入依赖

 <!-- 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请求的更多相关文章

  1. 安卓中使用OkHttp发送数据请求的两种方式(同、异步的GET、POST) 示例-- Android基础

    1.首先看一下最终效果的截图,看看是不是你想要的,这个年代大家都很忙,开门见山很重要! 简要说下,点击不同按钮可以实现通过不同的方式发送OkHttp请求,并返回数据,这里请求的是网页,所以返回的都是些 ...

  2. Android 的OkHttp(发送网络请求)

    今天讲的是和HttpURLConnection差不多的OkHttp; 先把网站献上: 官网介绍okhttp的: https://square.github.io/okhttp/ 下载postman的: ...

  3. Java发送Http请求并获取状态码

    通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断. try { URL u = new URL("http://10.1.2.8:8080/fqz/page ...

  4. AngularJs的$http发送POST请求,php无法接收Post的数据解决方案

      最近在使用AngularJs+Php开发中遇到php后台无法接收到来自AngularJs的数据,在网上也有许多解决方法,却都点到即止.多番摸索后记录下解决方法:tips:当前使用的AngularJ ...

  5. Ajax发送POST请求SpringMVC页面跳转失败

    问题描述:因为使用的是SpringMVC框架,所以想使用ModelAndView进行页面跳转.思路是发送POST请求,然后controller层中直接返回相应ModelAndView,但是这种方法不可 ...

  6. 使用HttpClient来异步发送POST请求并解析GZIP回应

    .NET 4.5(C#): 使用HttpClient来异步发送POST请求并解析GZIP回应 在新的C# 5.0和.NET 4.5环境下,微软为C#加入了async/await,同时还加入新的Syst ...

  7. 在发送ajax请求时加时间戳或者随机数去除js缓存

    在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳 大家在系统开发中都可能会在js中用到ajax或者dwr,因为IE的缓存,使得我们在填入相同的值的 ...

  8. HttpUrlConnection发送url请求(后台springmvc)

    1.HttpURLConnection发送url请求 public class JavaRequest { private static final String BASE_URL = "h ...

  9. kattle 发送post请求

    一.简介 kattle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,数据抽取高效稳定.它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述 ...

  10. 【荐】怎么用PHP发送HTTP请求(POST请求、GET请求)?

    file_get_contents版本: <?php /** * 发送post请求 * @param string $url 请求地址 * @param array $post_data pos ...

随机推荐

  1. 使用PIL为图片添加水印

    使用pillow库为图片添加文件或者图片水印 下面是我们想要添加水印的图片: 图片水印: 效果图如下: ps:对图片添加字体时,需指定字体文件,如 simsun.ttc windows中在 C:\Wi ...

  2. LeetCode952三部曲之二:小幅度优化(137ms -> 122ms,超39% -> 超51%)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<LeetCode952三部曲& ...

  3. ES13 中11个令人惊叹的 JavaScript 新特性

    前言 与许多其他编程语言一样,JavaScript 也在不断发展.每年,该语言都会通过新功能变得更加强大,使开发人员能够编写更具表现力和简洁的代码. 小编今天就为大家介绍ES13中添加的最新功能,并查 ...

  4. 记一次 .NET 某拍摄监控软件 卡死分析

    一:背景 1. 讲故事 今天本来想写一篇 非托管泄露 的生产事故分析,但想着昨天就上了一篇非托管文章,连着写也没什么意思,换个口味吧,刚好前些天有位朋友也找到我,说他们的拍摄监控软件卡死了,让我帮忙分 ...

  5. 其它——Siege压力测试工具使用

    文章目录 Siege压力测试工具使用 一 Siege介绍 二 windows 下使用 三 mac和linux使用 四 使用 五 参数详解 六 结果详解 七 修改系统的文件描述符限制 Siege压力测试 ...

  6. pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simpleLooking in indexes: https://pypi.tuna.t ...

  7. PostgreSQL快速导入千万条数据

    目录 一.测试环境 二.修改源数据为COPY可用的格式 三.DDL 四.COPY 五.结论 为了与MySQL做个对比,做一个PG的数据导入测试,使用COPY方式,测试环境保持一致,具体如下所述. 一. ...

  8. Go接口 - 构建可扩展Go应用

    本文深入探讨了Go语言中接口的概念和实际应用场景.从基础知识如接口的定义和实现,到更复杂的实战应用如解耦与抽象.多态.错误处理.插件架构以及资源管理,文章通过丰富的代码示例和详细的解释,展示了Go接口 ...

  9. python~windows自动化工具 uiautomation库

    微软提供了关于自动化操作PC端桌面应用程序的工具,官方描述为: Microsoft UI Automation is an accessibility framework that enables W ...

  10. oracle命令2 和一致性关闭、非一致性关闭

    启动SQL*Plus语法sqlplus [username/password][@server] [as sysdba|sysoper] ,其中username/password如果不输人,SQL*P ...