Okhttp post 发送空的body
16lz
2021-01-26
如果你还不知道okhttp那真的是太OUT了,公司最近登录接口需要post请求,但是最重要的是不需要再body里面进行传值,所以有了今天这个文章!
话不多说直接上代码:
private Call requestPostByUrl(String actionUrl, HashMap paramsMap, final ReqCallBack callBack) { StringBuilder tempParams = new StringBuilder(); try { int pos = 0; for (String key : paramsMap.keySet()) { if (pos > 0) { tempParams.append("&"); } tempParams.append(String.format("%s=%s", key, URLEncoder.encode(paramsMap.get(key), "utf-8"))); pos++; } String requestUrl = String.format("%s/%s?%s", BASE_URL, actionUrl, tempParams.toString()); final Request request = addHeaders().post(RequestBody.create(null, "")).url(requestUrl).build(); final Call call = mOkHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { failedCallBack("访问失败", callBack); Log.e(TAG, e.toString()); } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { String string = response.body().string(); Log.e(TAG, "response ----->" + string);
failedCallBack("服务器错误", callBack); } } }); return call; } catch (Exception e) { Log.e(TAG, e.toString()); } return null; }
以上就是我封装的请求, 最主要的就是这一句话:
addHeaders().post(RequestBody.create(null, ""))
声明为post请求,并且body为空
返回接口 请看
/** * Created by Administrator on 2017/11/15. */public interface ReqCallBack { /** * 响应成功 */ void onReqSuccess(T result); /** * 响应失败 */ void onReqFailed(String errorMsg);}
处理接口信息
我们放在了主线程中方便更新ui
小伙伴可以自己考虑
/** * 统一同意处理成功信息 * @param result * @param callBack * @param */ private void successCallBack(final T result, final ReqCallBack callBack) { okHttpHandler.post(new Runnable() { @Override public void run() { if (callBack != null) { callBack.onReqSuccess(result); } } }); } /** * 统一处理失败信息 * @param errorMsg * @param callBack * @param */ private void failedCallBack(final String errorMsg, final ReqCallBack callBack) { okHttpHandler.post(new Runnable() { @Override public void run() { if (callBack != null) { callBack.onReqFailed(errorMsg); } } }); }
需要用的小伙伴可直接使用 有问题 评论告诉我下,顺便点个赞呦~~
更多相关文章
- android mvvm livedata_Android(安卓)MVP && MVVM深度解析
- Android中提供的HttpURLConnection和HttpClient接口可以用来开发
- Android(安卓)系统(102)---Android(安卓)APP耗电优化
- Android随笔随想-GUI-事件分发先导篇
- [Android]如何做一个崩溃率少于千分之三噶应用app(7)-跨module交互
- 在android中使用MVP模式
- 使用MVP+Retrofit+RxJava实现的的Android(安卓)Demo (上)使用Nuclu
- 使用EasyPermissions高效处理权限
- Android(安卓)桌面请求录屏权限不唤起App