package com.huxq17.example.http.request; import com.huxq17.example.http.response.ResponseType; import java.io.File; import java.util.LinkedHashMap; /** * Created by huxq17 on 2015/11/24. */ public class HttpRequest { private HttpHeader header; private HttpMethod method; private RequestParams requestParams; private String url; private boolean synchron = false; private ResponseType responseType; public HttpHeader getHeader() { return header; } public HttpMethod getMethod() { return method; } public RequestParams getRequestParams() { return requestParams; } public String getUrl() { return url; } public boolean isSynchron() { return synchron; } public ResponseType responseType() { return responseType; } private HttpRequest(Builder builder) { this.header = builder.header; this.method = builder.method; this.requestParams = builder.requestParams; this.url = builder.url; this.synchron = builder.synchron; this.responseType = builder.responseType; } public static class Builder { private HttpHeader header; private HttpMethod method; private RequestParams requestParams; private String url; private boolean synchron = false; private ResponseType responseType; public Builder() { header = new HttpHeader(); method = HttpMethod.GET; requestParams = new RequestParams(); responseType = ResponseType.String; } public Builder url(String url) { this.url = url; return this; } /** * 设置当网络请求成功以后返回的类型,默认是String * * @param responseType * @return */ public Builder setResponseType(ResponseType responseType) { this.responseType = responseType; return this; } public Builder addHeader(String name, String value) { header.addHeader(name, value); return this; } /** * 设置为同步请求,默认为异步请求 * * @return */ public Builder synchron() { this.synchron = true; return this; } public Builder setHeader(LinkedHashMap<String, String> header) { this.header.setHeader(header); return this; } public Builder removeHeader(String name) { header.removeHeader(name); return this; } public Builder setParams(LinkedHashMap<String, Object> params) { if (params == null) { throw new RuntimeException("params==null"); } this.requestParams.setParams(params); return this; } public Builder setStringParams(String params) { requestParams.setStringParams(params); return this; } public Builder contentType(String contentType) { requestParams.setContentType(contentType); return this; } public Builder charSet(String charset) { requestParams.setCharSet(charset); return this; } public Builder addParam(String name, Object value) { requestParams.addParams(name, value); return this; } public Builder addFile(File file) { requestParams.addFile(file); return this; } public Builder addFile(String name, File file) { requestParams.addFile(name, file); return this; } public Builder addFile(String name, File file, String contentType) { requestParams.addFile(name, file, contentType); return this; } public Builder method(HttpMethod method) { this.method = method; return this; } public Builder post() { method = HttpMethod.POST; return this; } public HttpRequest build() { return new HttpRequest(this); } } }