zoukankan      html  css  js  c++  java
  • 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工具处理,提取想要的内容。

  • 相关阅读:
    深入理解委托、匿名方法和 Lambda 表达式
    常见SQL问题
    LeetCode题解——四数之和
    把中台说清楚
    程序员们的三高:高并发、高性能、高可用
    论文查重是怎么查的
    LeetCode题解——最长回文子串
    六百字读懂 Git(转)
    SQL中ON和WHERE的区别
    链表排序之堆排序
  • 原文地址:https://www.cnblogs.com/MyOceansWeb/p/10424595.html
Copyright © 2011-2022 走看看