简单封装一个http请求工具

类别:java  阅读:255  发布时间:Tue Nov 21 21:54:30 CST 2017

    最近项目需要,使用Okhttp封装了一个http请求工具,支持get、post、put请求方式,支持带header请求,支持form或json提交参数。

package com.oneway.adn.fetch.util;

import com.oneway.adn.fetch.vo.ApiResult;
import okhttp3.*;

import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * Created by liangyaoren on 2017/9/9.
 */
public class ApiKit {
    private static final OkHttpClient.Builder builder = new OkHttpClient.Builder().connectTimeout(1, TimeUnit.MINUTES).readTimeout(1, TimeUnit.MINUTES).writeTimeout(1, TimeUnit.MINUTES);
    private static final OkHttpClient client = builder.build();

    private static ApiResult getApiResult(Request request){
        Response response = null;
        ApiResult apiResult = new ApiResult();
        try {
            response = client.newCall(request).execute();
            String body = response.body().string();
            if (response.isSuccessful()){
                apiResult.setSuccess(true);
                apiResult.setBody(body);
            }else {
                apiResult.setSuccess(false);
                apiResult.setErrorMsg(body);
            }
            return apiResult;
        } catch (IOException e) {
            e.printStackTrace();
            apiResult.setSuccess(false);
            apiResult.setErrorMsg(e.getMessage());
            return apiResult;
        }finally {
            if (response != null){
                response.close();
            }
        }
    }

    public static ApiResult get(String url){
        return sendRequest(url, Collections.EMPTY_MAP, Collections.EMPTY_MAP);
    }

    public static ApiResult get(String url, Map params){
        return sendRequest(url, params, Collections.EMPTY_MAP);
    }

    public static ApiResult getWithHeader(String url, Map header){
        return sendRequest(url, Collections.EMPTY_MAP, header);
    }

    public static ApiResult get(String url, Map params, Map header){
        return sendRequest(url, params, header);
    }

    public static ApiResult post(String url, Map form){
        return sendRequest("POST", url, form, Collections.EMPTY_MAP);
    }

    public static ApiResult post(String url, String data, Map header){
        return sendRequest("POST", url, data, header);
    }

    public static ApiResult post(String url, Map form, Map header){
        return sendRequest("POST", url, form, header);
    }

    public static ApiResult put(String url, Map form){
        return sendRequest("PUT", url, form, Collections.EMPTY_MAP);
    }

    public static ApiResult put(String url, String data, Map header){
        return sendRequest("PUT", url, data, header);
    }

    public static ApiResult put(String url, Map form, Map header){
        return sendRequest("PUT", url, form, header);
    }

    private static ApiResult sendRequest(String url, Map params, Map header){
        HttpUrl.Builder urlBuilder = HttpUrl.parse(url).newBuilder();
        params.forEach((k,v) -> urlBuilder.addQueryParameter(k,v));
        HttpUrl httpUrl = urlBuilder.build();
        Request request = new Request.Builder().get().headers(Headers.of(header)).url(httpUrl).build();
        return getApiResult(request);
    }

    private static ApiResult sendRequest(String method, String url, String data, Map header){
        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), data);
        Request request = new Request.Builder().method(method, requestBody).headers(Headers.of(header)).url(url).build();
        return getApiResult(request);
    }

    private static ApiResult sendRequest(String method, String url, Map form, Map header){
        FormBody.Builder formBodyBuilder = new FormBody.Builder();
        form.forEach((k,v) -> formBodyBuilder.add(k,v));
        RequestBody requestBody = formBodyBuilder.build();
        Request request = new Request.Builder().method(method, requestBody).headers(Headers.of(header)).url(url).build();
        return getApiResult(request);
    }

    public static void main(String[] args) {
        String url = "https://blog.notejava.com";
        ApiResult apiResult = ApiKit.get(url);
        System.out.println(apiResult.getBody());
    }
}

    结果类封装

package com.oneway.adn.fetch.vo;

/**
 * Created by yaoren on 2017/9/7 0007.
 */
public class ApiResult {
    private String errorMsg;
    private boolean success;
    private String body;

    public String getErrorMsg() {
        return errorMsg;
    }

    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public boolean isSuccess() {
        return success;
    }

    public boolean isFail(){
        return !isSuccess();
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }


}


关键字:http 请求

上一篇:java解压zip和rar

下一篇:mysql分区表实践

© copyright 粤ICP备16108162号-1