【OkHttp】封装帮助类
来源:互联网 发布:淘宝旅行机票网 编辑:程序博客网 时间:2024/05/22 12:27
分享一个okhttp请求帮助类
package com.xxx.net;import android.os.AsyncTask;import android.util.Log;import com.xxx.util.LogcatHelper;import java.io.IOException;import java.util.Map;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import okhttp3.MediaType;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;/** * Created by Administrator on 2016/9/22 0022. */public class HttpHelp { public static final MediaType FORM_CONTENT_TYPE = MediaType.parse("application/x-www-form-urlencoded; charset=utf-8"); public static final MediaType FORM_CONTENT_TYPE_XML = MediaType.parse("text/xml; charset=utf-8"); private static HttpHelp instance; private static OkHttpClient client; private ExecutorService executor; public enum Type{ GET,POST } public interface CallBack{ void result(String result, boolean isSuccess); } public HttpHelp() { client = new OkHttpClient(); executor = Executors.newCachedThreadPool(); } public static HttpHelp getInstance() { if (instance ==null){ instance = new HttpHelp(); } return instance; } public void requestGet(final String url, final CallBack callBack){ new MyAsyncTask(url,callBack).executeOnExecutor(executor); } public void requestPost(final String url, Map<String,String> formParams,final CallBack callBack){ new MyAsyncTask(url,formParams,callBack).executeOnExecutor(executor); } public void requestPost(final String url, Map<String,String> params,boolean isParamXml,final CallBack callBack){ new MyAsyncTask(url,params,callBack,isParamXml).executeOnExecutor(executor); } public class MyAsyncTask extends AsyncTask<Void,Void,String>{ private String url; private Map<String,String> formParams; private Type type = Type.GET; private CallBack mCallBack; private boolean isParamXml;//传入参数是否是xml标签格式 /** * get请求 * @param url 请求地址 * @param callBack 结果回调 */ public MyAsyncTask( String url,CallBack callBack) { this.url = url; this.type = Type.GET; this.mCallBack = callBack; } /** * post请求 * @param url 请求地址 * @param formParams 表单参数 * @param callBack 结果回调 */ public MyAsyncTask( String url, Map<String,String> formParams,CallBack callBack) { this.url = url; this.formParams = formParams; this.type = Type.POST; this.mCallBack = callBack; } /** * post请求(isParamXml传true,用于xml格式) * @param url 请求地址 * @param formParams 表单参数 * @param callBack 结果回调 */ public MyAsyncTask( String url, Map<String,String> formParams,CallBack callBack,boolean isParamXml) { this.url = url; this.formParams = formParams; this.type = Type.POST; this.mCallBack = callBack; this.isParamXml = isParamXml; } @Override protected String doInBackground(Void... params) { String result = null; Request request = null; try { if(type ==Type.GET){ request = new Request.Builder() .url(url) .build(); }else if(type ==Type.POST){ StringBuffer sb = new StringBuffer(); RequestBody body; if(isParamXml){ //设置xml格式参数 sb.append("<xml>"); for (String key: formParams.keySet()) { sb.append("<"+key+">"+formParams.get(key)+"</"+key+">"); } sb.append("</xml>"); Log.i("TAG", ""+sb.toString()); body = RequestBody.create(FORM_CONTENT_TYPE_XML, sb.toString()); }else{ //设置表单参数// FormBody.Builder builder = new FormBody.Builder(); for (String key: formParams.keySet()) {// builder.add(key,formParams.get(key)); sb.append(key+"="+formParams.get(key)+"&"); } Log.i("TAG", ""+sb.toString()); body = RequestBody.create(FORM_CONTENT_TYPE, sb.toString()); } //创建请求 request = new Request.Builder() .url(url)// .post(builder.build()) .post(body) .build(); } //发送请求 Response response = client.newCall(request).execute(); result = response.body().string().toString(); LogcatHelper.showLogCompletion("result: "+result,500); } catch (IOException e) { e.printStackTrace(); }catch (NullPointerException e) { e.printStackTrace(); } return result; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); if(result ==null){ mCallBack.result(null,false); }else{ mCallBack.result(result,true); } } }}
0 0
- 【OkHttp】封装帮助类
- OkHttp封装类
- OkHttp封装类
- OKHttp封装类
- OkHttp封装类
- Okhttp工具类封装
- OkHttp封装类
- OkHttp封装类
- okhttp封装类
- Okhttp封装工具类
- OkHttp封装类
- okhttp封装类
- 封装OkHttp工具类
- OKHttp的封装类
- okhttp封装工具类
- OkHttp二次封装类
- 封装OKHttp,工具类
- Okhttp请求封装类
- python-logging
- 每日一个js实例7--通过面向对象实现选项卡
- 网络处理
- C++类成员变量初始化顺序问题
- oracle的日期函数
- 【OkHttp】封装帮助类
- 数据库处理
- UDP 调用 connect的作用--4A--个人总结
- 解决Could not find method android() for arguments问题
- Android studio 启动错误——Gradle
- 机器学习_统计学习_深度学习的一些公式
- wamp,MySQL,perl的联谊之路
- log4j将日志输出到数据库
- 高度不定 垂直居中