先工具类

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. PostgreSQL自学笔记:7 插入、更新与删除数据

    7 插入.更新与删除数据 7.1 插入数据 先创建表person: create table person( id int not null, name char(40) not null defau ...

  2. Scrapy基础(十四)————知乎模拟登陆

    #-*-coding:utf-8 -*-__author__ = "ruoniao"__date__ = "2017/5/31 20:59" 之前我们通过爬取伯 ...

  3. js两个箭头 =>()=>()

    request(_ action)let withStatus =status =>action=> R.merge(action, (status])let request = with ...

  4. AMPPZ-2015 (MIPT Workshop Open 1)

    A. Album of Numbers 设$cnt[i]$表示数字$i$的个数,则$ans=\frac{\sum_{i} i\times cnt[i]\prod_{j>i}(cnt[j]+1)} ...

  5. CSS(八)

    CSS3 transform变换 1.translate(x,y) 设置盒子位移2.scale(x,y) 设置盒子缩放3.rotate(deg) 设置盒子旋转4.skew(x-angle,y-angl ...

  6. Physics Experiment 弹性碰撞 [POJ3684]

    题意 有一个竖直的管子内有n个小球,小球的半径为r,最下面的小球距离地面h高度,让小球每隔一秒自由下落一个,小球与地面,小球与小球之间可视为弹性碰撞,让求T时间后这些小球的分布 Input The f ...

  7. SVN 提示clean up 进入死循环

    SVN在使用update命令时,提示使用“clean up ”命令,在使用clean up命令时报错“Previous operation has not finished; run 'cleanup ...

  8. 【搜索1】P1605 迷宫

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  9. Java根据链接生成二维码

    Java根据链接生成二维码 相关 jar 包: core-3.1.0.jar 源码及 jar 包下载:http://files.cnblogs.com/files/liaolongjun/qrcode ...

  10. js canvas获取图片base64 dataUrl

    function getImgBase64(path, callback) { var img = new Image(); img.src = path; //图片加载完成后触发 img.onloa ...