先工具类

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. less那些事儿

    1.计算函数 less写法要特殊处理一下,否则会被识别成calc(60%); /* css */ width: calc(100% - 40px); / * less */ width : calc( ...

  2. 【安全性测试】一个简单地绕前端暴XSS漏洞

    在appscan暴出一个关于跨站点脚本编制的漏洞,但是appscan并不能完整地显示该漏洞.于是,工具是否出现误报,需要通过自己手工验证. 然后,我们需要找到目标参数的包并分析是从哪个步骤提交给服务器 ...

  3. FC105 FC106 Scale功能块使用说明

    有一点不明白,这个跟传感器本身的分辨率什么关系? 为什么定死 极性和非极性的值是7648 和27648 FC105是处理模拟量(1~5V.4~20MA等信号)输入的功能块: 其中管脚的定义如下:IN- ...

  4. [LeetCode] Smallest Rotation with Highest Score 得到最高分的最小旋转

    Given an array A, we may rotate it by a non-negative integer K so that the array becomes A[K], A[K+1 ...

  5. 安装linux

    ctrl+alt tab键切换

  6. Windows系统JDK安装配置

    JDK和JRE的安装 打开java的官方网站,下载安装程序,版本根据自己情况选择: 双击安装程序: 点击"下一步": 此处推荐默认路径安装,如果自定义安装目录,则需记住自定义的安装 ...

  7. Windows 2012 下Redmine安装和环境搭建

    公司在过去一年中处于高速发展创业期,对于技术管理和项目管理没有找到一个很好的管理工具,使用过Teanbition+禅道+SVM的集成管理工具,但是明显各工具之间联系性差,断层严重,不能很好的形成团队成 ...

  8. Could not find artifact cn.e3mall:e3mall-parent:pom:0.0.1-SNAPSHOT

    [ERROR] [ERROR] Some problems were encountered while processing the POMs:[FATAL] Non-resolvable pare ...

  9. flex 左边固定宽度,右边自适应

    <div id="flex"> <div id="left">我在边,定宽</div> <div id="r ...

  10. Spring的核心模块解析

    Spring框架是一个轻量级的集成式开发框架,可以和任何一种框架集成在一起使用,可以说是一个大的全家桶.Spring从1.x发展到现在的5.x可以说是越来越强大,下面来看看Spring都包含哪些核心的 ...