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 ...
随机推荐
- redis初步入门(1)
一.redis是一款高性能NOSQL系列的非关系型的数据库,其是用C语言开发的一个开源高性能键值对(key-value)数据库. 二.redis的应用场景 1.缓存(数据查询.短连接.新闻内容.商品内 ...
- PCB资料
电子工程世界论坛 http://bbs.eeworld.com.cn/forum-68-1.html
- angularjs ng-if 中的ng-model 值作用域问题
现象:最近做了一个需求,页面上使用了ng-if 条件做判断,导致通过使用 $scope 获取不到 ng-model 的值. 问题原因: ng-if这个指令单独开了一个作用域,它只可以继承,不可以进行往 ...
- Windows系统JDK安装配置
JDK和JRE的安装 打开java的官方网站,下载安装程序,版本根据自己情况选择: 双击安装程序: 点击"下一步": 此处推荐默认路径安装,如果自定义安装目录,则需记住自定义的安装 ...
- Python练手例子(1)
1.有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. #本人的运行 ...
- 移动端web开发常见问题
1.移动端如何定义字体font-family 三大手机系统的字体: ios 系统 默认中文字体是Heiti SC 默认英文字体是Helvetica 默认数字字体是HelveticaNeue 无微软雅黑 ...
- 解决vue webApp使用lib-flexible和px2rem引用第三方ui库后,样式变小问题
首先,需要卸载项目中的postcss-px2rem. npm uninstall postcss-px2rem --save-dev 其次,安装postcss-px2rem-exclude npm i ...
- Robot Framework 1
about Robot, learnt from the following document, perfect document !!!! http://www.virtuousprogrammer ...
- 在linux服务器新添加硬盘,如何识别、挂载。
在linux服务器新添加硬盘,如何识别.怎样挂载磁盘.过程是怎么样. fdisk - manipulate disk partition tablemkfs - build a Linux files ...
- Web开发——Photoshop(PSD格式截取)
Step1 将截取到的图片,存储为Web所用格式. Step2 在右上角选择存储格式为:PNG-24(PNG-8可能会出现白边).