package com.framework.okhttp.request; import com.framework.okhttp.callback.OkHttpCallBack; import java.util.Map; import okhttp3.Headers; import okhttp3.Request; import okhttp3.RequestBody; public abstract class OkHttpRequest { protected String url; protected Object tag; protected Map<String, String> params; protected Map<String, String> headers; protected Request.Builder builder = new Request.Builder(); protected OkHttpRequest(String url, Object tag, Map<String, String> params, Map<String, String> headers) { this.url = url; this.tag = tag; this.params = params; this.headers = headers; if (url == null) { throw new RuntimeException("url should not be null !"); } } protected abstract RequestBody buildRequestBody(); protected RequestBody wrapRequestBody(RequestBody requestBody, final OkHttpCallBack callback) { return requestBody; } protected abstract Request buildRequest(Request.Builder builder, RequestBody requestBody); public RequestCall build() { return new RequestCall(this); } public Request generateRequest(OkHttpCallBack callback) { RequestBody requestBody = wrapRequestBody(buildRequestBody(), callback); prepareBuilder(); return buildRequest(builder, requestBody); } private void prepareBuilder() { builder.url(url).tag(tag); appendHeaders(); } protected void appendHeaders() { Headers.Builder headerBuilder = new Headers.Builder(); if (headers == null || headers.isEmpty()) return; for (String key : headers.keySet()) { headerBuilder.add(key, headers.get(key)); } builder.headers(headerBuilder.build()); } @Override public String toString() { return "OkHttpRequest{" + "url='" + url + '\'' + ", tag=" + tag + ", params=" + params + ", headers=" + headers + '}'; } }