package com.demo.lib.common.okhttp.request; import android.text.TextUtils; import com.demo.lib.common.okhttp.OkHttpUtils; import com.demo.lib.common.okhttp.utils.Exceptions; import java.util.Map; import okhttp3.MediaType; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.internal.http.HttpMethod; /** * Created by zhy on 16/2/23. */ public class OtherRequest extends OkHttpRequest { private static MediaType MEDIA_TYPE_PLAIN = MediaType.parse("text/plain;charset=utf-8"); private RequestBody requestBody; private String method; private String content; public OtherRequest(RequestBody requestBody, String content, String method, String url, Object tag, Map params, Map headers,int id) { super(url, tag, params, headers,id); this.requestBody = requestBody; this.method = method; this.content = content; } @Override protected RequestBody buildRequestBody() { if (requestBody == null && TextUtils.isEmpty(content) && HttpMethod.requiresRequestBody(method)) { Exceptions.illegalArgument("requestBody and content can not be null in method:" + method); } if (requestBody == null && !TextUtils.isEmpty(content)) { requestBody = RequestBody.create(MEDIA_TYPE_PLAIN, content); } return requestBody; } @Override protected Request buildRequest(RequestBody requestBody) { if (method.equals(OkHttpUtils.METHOD.PUT)) { builder.put(requestBody); } else if (method.equals(OkHttpUtils.METHOD.DELETE)) { if (requestBody == null) builder.delete(); else builder.delete(requestBody); } else if (method.equals(OkHttpUtils.METHOD.HEAD)) { builder.head(); } else if (method.equals(OkHttpUtils.METHOD.PATCH)) { builder.patch(requestBody); } return builder.build(); } }