okhttp3工具类及其使用
先工具类
package com.bhy.bdai.util; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response; public class OkHttpClientUtil {
private static int connTimeOut = 5;
private static int readTimeOut = 20;
private static int writeTimeOut = 10;
public static OkHttpClient client = null; static {
client = new OkHttpClient.Builder()
.connectTimeout(5L, TimeUnit.SECONDS)
.readTimeout(20L, TimeUnit.SECONDS)
.writeTimeout(10L, TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.build();
} public OkHttpClientUtil() {
} public static String doGet(String host, String path, Map<String, String> headers, Map<String, String> querys) throws Exception {
StringBuffer url = new StringBuffer(host + (path == null?"":path));
if(querys != null) {
url.append("?");
Iterator iterator = querys.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry<String, String> e = (Map.Entry)iterator.next();
url.append((String)e.getKey()).append("=").append((String)e.getValue() + "&");
}
url = new StringBuffer(url.substring(0,url.length()-1));
}
Request.Builder requestBuilder = new Request.Builder();
if(headers != null && headers.size() > 0) {
Iterator iterator = headers.keySet().iterator();
while(iterator.hasNext()) {
String key = (String)iterator.next();
requestBuilder.addHeader(key, (String)headers.get(key));
}
}
Request request = (requestBuilder).url(url.toString()).build();
Response response = client.newCall(request).execute();
String responseStr = response.body() == null?"":response.body().string();
return responseStr;
} public static String doPost(String url, Map<String, String> headers, Map<String, String> querys) throws Exception {
FormBody.Builder formbody = new FormBody.Builder();
if(null != querys){
Iterator iterator = querys.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry<String, String> elem = (Map.Entry)iterator.next();
formbody.add((String)elem.getKey(), (String)elem.getValue());
}
} RequestBody body = formbody.build();
Request.Builder requestBuilder = (new Request.Builder()).url(url);
if(headers != null && headers.size() > 0) {
Iterator iteratorHeader = headers.keySet().iterator();
while(iteratorHeader.hasNext()) {
String key = (String)iteratorHeader.next();
requestBuilder.addHeader(key, (String)headers.get(key));
}
} Request requet = requestBuilder.post(body).build();
Response response = client.newCall(requet).execute();
String responseStr = response.body() == null?"":response.body().string();
return responseStr;
} public static String doPost(String url, Map<String, String> headers, String sendMessage) throws Exception { RequestBody body = FormBody.create(MediaType.parse("application/json"), sendMessage);;
Request.Builder requestBuilder = (new Request.Builder()).url(url);
if(headers != null && headers.size() > 0) {
Iterator iteratorHeader = headers.keySet().iterator();
while(iteratorHeader.hasNext()) {
String key = (String)iteratorHeader.next();
requestBuilder.addHeader(key, (String)headers.get(key));
}
} Request requet = requestBuilder.post(body).build();
Response response = client.newCall(requet).execute();
String responseStr = response.body() == null?"":response.body().string();
return responseStr;
} public static String doPut(String host, String path, Map<String, String> headers, Map<String, String> querys) throws Exception {
FormBody.Builder builder = new FormBody.Builder();
Iterator iterator = querys.entrySet().iterator(); while(iterator.hasNext()) {
Map.Entry<String, String> elem = (Map.Entry)iterator.next();
builder.add((String)elem.getKey(), (String)elem.getValue());
} RequestBody body = builder.build();
Request.Builder requestBuilder = (new Request.Builder()).url(host + path);
if(headers != null && headers.size() > 0) {
Iterator iteratorHeader = headers.keySet().iterator();
while(iteratorHeader.hasNext()) {
String key = (String)iteratorHeader.next();
requestBuilder.addHeader(key, (String)headers.get(key));
}
} Request requet = requestBuilder.put(body).build();
Response response = client.newCall(requet).execute();
String responseStr = response.body() == null?"":response.body().string();
return responseStr;
}
}
需要引入的是:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.10.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
看到FormBody类里面默认创建的MediaType是application/x-www-form-urlencoded。
所以进行非文件请求时,用这个工具类需要把map转为string后使用。
Map<String, String> body = new HashMap<>();
body.put("appid",String.valueOf(aid));
body.put("url",img);
String bodys = JSONObject.toJSONString(body);
大多数情况下,接收返回值后都需要
JSONArray obj = JSON.parseArray(responsep);
JSONObject one = (JSONObject)obj.get(0);
这两个json工具处理,提取想要的内容。
okhttp3工具类及其使用的更多相关文章
- Java使用OkHttps工具类调用外部接口
前言 现在公司业务已止不是传统的增删改查等简单的业务处理操作,而是对数据各种联调三方接口与其他系统进行交互等,那么就需要我们在后台java中进行外部接口的调用,本文采用OkHttps工具类对接微信接口 ...
- 超简单的okhttp封装工具类(上)
版权声明:转载请注明出处:http://blog.csdn.net/piaomiao8179 https://blog.csdn.net/piaomiao8179/article/details/ ...
- OkHttp工具类
package test; import java.io.File; import java.io.IOException; import java.util.ArrayList; import ja ...
- 用Java编写的http下载工具类,包含下载进度回调
HttpDownloader.java package com.buyishi; import java.io.FileOutputStream; import java.io.IOException ...
- Retrofit+RxJava联网工具类
在python 进程.线程 (一)中简单的说过,CPython中的GIL使得同一时刻只能有一个线程运行,即并发执行.并且即使是多核CPU,GIL使得同一个进程中的多个线程也无法映射到多个CPU上运行, ...
- 七牛云-上传、删除文件,工具类(Day49)
要求: 1. java1.8以上 2. Maven: 这里的version指定了一个版本范围,每次更新pom.xml的时候会尝试去下载7.5.x版本中的最新版本,你可以手动指定一个固定的版本. < ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- Android—关于自定义对话框的工具类
开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...
- [转]Java常用工具类集合
转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...
随机推荐
- weblogic 安装部署详解
0x01 weblogic下载安装 去Oracle官网下载Weblogic 10.3.6,选择Generic版本,各版本选择下载地址:http://www.oracle.com/technetwork ...
- XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Korea
A. Donut 扫描线+线段树. #include<cstdio> #include<algorithm> using namespace std; typedef long ...
- mvc文件下载
public ActionResult xiazai(int id) { DataTable dt = bll.chaxun(id); //获取文件名字 var filename = dt.Rows[ ...
- mysql 日志类型
mysql有四种日志: 所有日志:general log 慢查询日志:slow log 二进制日志:binary log 错误日志:error log windows下在my.ini里配置,linux ...
- apache-2.4.6 mod_bw-0.92 实现限速上传或下载
下载 mod_bw wget http://ivn.cl/files/source/mod_bw-0.92.tgz 解压到mod_bw tar -zxvf mod_bw-0.92.tgz -C mo ...
- 20175320 2018-2019-2 《Java程序设计》第6周学习总结
20175320 2018-2019-2 <Java程序设计>第6周学习总结 教材学习内容总结 本周学习了教材的第七及第十章的内容.在这两章中介绍了接内部类与异常类以及输入.输出流,第七章 ...
- vue 引入字体库
1.先下载字体文件所需的.ttf文件 2.将字体文件引入 自己定义一个文件夹,放入下载好的.ttf文件 先自己定义一个font.css文件,将下载好的字体文件的路径引入 @font-face { fo ...
- Rabbitmq消息持久化
1.交换机持久化设置 exchange 持久化,在声明时指定 durable未true 2.队列持久化设置 queue 持久化,在声明时指定 durable 为true 3.消息持久化设置 Deliv ...
- python3 Django集成Ueditor富文本编辑器
1.下载 python3: https://github.com/twz915/DjangoUeditor3/ (直接下载zip) 2.解压,解压打开后找到DjangoUeditor将DjangoUe ...
- 【托业】【跨栏】TEST05
22 23 21. 22 23 24 25 REVIEW TEST05