美文网首页
okhttp使用示例

okhttp使用示例

作者: 行走的鸡汤哥 | 来源:发表于2019-12-28 22:18 被阅读0次

maven依赖

<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.0.0</version>
</dependency>

使用示例


import lombok.extern.slf4j.Slf4j;
import okhttp3.*;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.StringJoiner;
import java.util.concurrent.TimeUnit;

/**
 * Created by r.x on 2019/8/31.
 */
@Slf4j
public class HttpUtil {
    private static final OkHttpClient client;
    public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
    private static final int TIMEOUT = 3000;

    static {
        client = new OkHttpClient.Builder()
                // .connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS) // 连接超时
                // .readTimeout(TIMEOUT, TimeUnit.MILLISECONDS) //读取超时
                .retryOnConnectionFailure(false)
                .callTimeout(TIMEOUT, TimeUnit.MILLISECONDS) // 总超时,包括连接和读取
                .build();
    }

    public static String get(String url) {
        return get(url, null, null);
    }

    public static String get(String url, Map<String, String> headers, Map<String, String> queryParams) {
        try {
            if (headers == null) {
                headers = new HashMap<>();
            }
            Headers requestHeaders = Headers.of(headers);
            if (queryParams != null && queryParams.size() > 0) {
                StringJoiner paramJoiner = new StringJoiner("&", "?", "");
                queryParams.entrySet().stream()
                        .map(entry -> entry.getKey() + "=" + entry.getValue())
                        .forEach(paramJoiner::add);
                url += paramJoiner.toString();
            }
            Request request = new Request.Builder()
                    .get()
                    .url(url)
                    .headers(requestHeaders)
                    .build();
            Response response = client.newCall(request).execute();
            return response.body().string();
        } catch (IOException | NullPointerException e) {
            log.error("get请求失败 url:{}, header:{}, params:{}", url, headers, queryParams, e);
            return null;
        }
    }

    /**
     * 可用于下载图片
     */
    public static InputStream getInputStream(String url) {
        try {
            Request request = new Request.Builder()
                    .get()
                    .url(url)
                    .build();
            Response response = client.newCall(request).execute();
            return response.body().byteStream();
        } catch (IOException | NullPointerException e) {
            log.error("get请求失败 url:{}", url, e);
            return null;
        }
    }


    public static String postJson(String url, String json) {
        return postJson(url, json, null, null);
    }

    public static String postJson(String url, String json, Map<String, String> headers, Map<String, String> queryParams) {
        try {
            if (queryParams != null && queryParams.size() > 0) {
                StringJoiner paramJoiner = new StringJoiner("&", "?", "");
                queryParams.entrySet().stream()
                        .map(entry -> entry.getKey() + "=" + entry.getValue())
                        .forEach(paramJoiner::add);
                url += paramJoiner.toString();
            }
            if (headers == null) {
                headers = new HashMap<>();
            }
            Headers requestHeaders = Headers.of(headers);
            RequestBody body = RequestBody.create(json, JSON);
            Request request = new Request.Builder()
                    .headers(requestHeaders)
                    .url(url)
                    .post(body)
                    .build();
            Response response = client.newCall(request).execute();
            return response.body().string();
        } catch (IOException | NullPointerException e) {
            log.error("post请求失败 url:{}, body:{}", url, json, e);
            return null;
        }
    }
}

相关文章

  • okhttp使用示例

    maven依赖 使用示例

  • OkHttp( 3.9.0-SNAPSHOT)源码解析

    OkHttp源码的samples的简单使用的示例: public static void main(String....

  • Retrofit源码解析

    本文基于Retrofit 2.3.0,OkHttp 3.8.0进行分析。 使用示例 以上是Retrofit的简单使...

  • Android 网络请求:Retrofit 使用

    Android 网络请求:Retrofit 使用 网络请求:retrofit+okhttp3 示例项目: 有妹子的...

  • OkHttp源码解析

    OkHttp简单使用 gradle依赖配置 网络权限 GET请求示例 核心源码解析 网络请求任务调度,RealCa...

  • 资源

    okHttp的使用: OkHttp使用完全教程OkHttp官方教程解析-彻底入门OkHttp使用 okHttp的源...

  • Weex 坑点记录

    1. Websocket的Okhttp 配套太老。   Weex示例里面的低版本的okhttp onMessage...

  • 6.1开源框架-okhttp网络框架-详解

    okhttp网络框架 OkHttp使用简介 OkHttp源码剖析 1.OkHttp使用简介 创建客户端Okhttp...

  • OkHttp之示例

    我们写了一些方法来示例如果使用OkHttp来解决常见问题。通读它们了解它们是如何一起工作的。随意地进行复制、粘贴,...

  • OkHttp使用教程

    OkHttp使用教程 Android OkHttp官方教程解析-彻底入门OkHttp使用 How to ret...

网友评论

      本文标题:okhttp使用示例

      本文链接:https://www.haomeiwen.com/subject/uopuoctx.html