先工具类

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工具类及其使用的更多相关文章

  1. Java使用OkHttps工具类调用外部接口

    前言 现在公司业务已止不是传统的增删改查等简单的业务处理操作,而是对数据各种联调三方接口与其他系统进行交互等,那么就需要我们在后台java中进行外部接口的调用,本文采用OkHttps工具类对接微信接口 ...

  2. 超简单的okhttp封装工具类(上)

      版权声明:转载请注明出处:http://blog.csdn.net/piaomiao8179 https://blog.csdn.net/piaomiao8179/article/details/ ...

  3. OkHttp工具类

    package test; import java.io.File; import java.io.IOException; import java.util.ArrayList; import ja ...

  4. 用Java编写的http下载工具类,包含下载进度回调

    HttpDownloader.java package com.buyishi; import java.io.FileOutputStream; import java.io.IOException ...

  5. Retrofit+RxJava联网工具类

    在python 进程.线程 (一)中简单的说过,CPython中的GIL使得同一时刻只能有一个线程运行,即并发执行.并且即使是多核CPU,GIL使得同一个进程中的多个线程也无法映射到多个CPU上运行, ...

  6. 七牛云-上传、删除文件,工具类(Day49)

    要求: 1. java1.8以上 2. Maven: 这里的version指定了一个版本范围,每次更新pom.xml的时候会尝试去下载7.5.x版本中的最新版本,你可以手动指定一个固定的版本. < ...

  7. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  8. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  9. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

随机推荐

  1. CSS(三)

    CSS盒子模型 盒子模型解释 元素在页面中显示成一个方块,类似一个盒子,CSS盒子模型就是使用现实中盒子来做比喻,帮助我们设置元素对应的样式.盒子模型示意图如下: 把元素叫做盒子,设置对应的样式分别为 ...

  2. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第5章编程练习5

    #include <iostream>using namespace std;const MAXSIZE=12;const year=3;int main(){ char *month[M ...

  3. Java数据库连接与查询

    9个步骤: 1.加载数据库驱动: 2.连接数据库: 3.创建语句statement: 5.创建sql语法字符串: 6.执行: 7.如果步骤6是执行新增.修改.删除操作那么返回的是影响的行数,如果是执行 ...

  4. 3.2station

    题意火车进入,然后要求以最大字典序输出 解题思路:先用一个数组储存当前位置之后最大的数字是什么,然后把已经进站的最后一节火车和还没进站的车的最大值,哪个更大,如果已经进站的更大,那么就先出站,否则就先 ...

  5. Java课程课后作业190315之从文档中读取随机数并得到最大连续子数组

    从我上一篇随笔中,我们可以得到最大连续子数组. 按照要求,我们需要从TXT文档中读取随机数,那在此之前,我们需要在程序中写入随机数 import java.io.File; import java.i ...

  6. harpoxy 配置

    HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保 ...

  7. Red hat查找命令所属的rpm包

    当安装命令软件包时,很多时候命令名不一定就是软件包的名字 如scp命令,其命令名就和软件包名字不一样,直接安装会失败: #yum install scp .... Trying other mirro ...

  8. 1 开发环境 eclipse oomph版本 jdk1.8 lucene 6.6.0,luke6.6.0

    第一个jar  是分词器,后面的是lucene  解压出来的 路径如下: lucene-analyzers-common-6.6.0.jar:lucene-6.6.0/common/ lucene-a ...

  9. pthread_detach()与pthread_join的区别?

    简单来说: pthread_detach()即主线程与子线程分离,子线程结束后,资源自动回收.pthread_join()即是子线程合入主线程,主线程阻塞等待子线程结束,然后回收子线程资源. [转]在 ...

  10. python学习-01

    1.编程语言分类: 编译型:(由编译器将代码编译成计算机识别的二进制文件)C \C++ \C#    运行速度较解释型语言快 解释型:(在运行时进行编译)python.php.sheel.ruby.j ...