【andorid】基于okhttp3网络请求帮助类(GET、POST)
2016-09-27 15:49
288 查看
import android.os.AsyncTask; import com.wanwei.szjz.myapplication.util.LogcatHelper; import java.io.IOException; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * Created by Administrator on 2016/9/22 0022. */ public class HttpHelp { private static HttpHelp instance; private static OkHttpClient client; private ExecutorService executor; public enum Type{ GET,POST } public interface CallBack{ public 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 class MyAsyncTask extends AsyncTask<Void,Void,String>{ private String url; private Map<String,String> formParams; private Type type = Type.GET; private CallBack mCallBack; /** * 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; } @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){ //设置表单参数 FormBody.Builder builder = new FormBody.Builder(); for (String key: formParams.keySet()) { builder.add(key,formParams.get(key)); } //创建请求 request = new Request.Builder() .url(url) .post(builder.build()) .build(); } //发送请求 Response response = client.newCall(request).execute(); result = response.body().string().toString(); LogcatHelper.showLogCompletion("result: "+result,100); } 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); } } } }
相关文章推荐
- Android 网络请求框架,包涵get,post请求,from表单上传图片,基于okhtt封装的图片上传
- 通过AsyncTask实现网络请求的方式,get和post
- iOS 网络请求数据 同步请求、异步请求、GET、POST请求
- 使用HttpURLConnection和使用HttpClient方式请求网络采用get方式和post方式请求数据
- 安卓网络请求只Get和Post
- iOS网络编程开发GET请求和POST请求
- IOS中http网络请求get和post的区别
- android-java中的网络请求:get与post
- java网络编程中向指定URL发送GET POST请求示例
- 网络编程之get,post请求,文件上传及下载
- IOS开发之NSURL网络请求,同步异步,GET,POST
- android 之http网络请求之基本的GET,POST请求一
- iOS基础8:自定义MyData/自定义SQLite用于网络判断,版本判断,图片缓存处理,下载或者上传的GET或POST请求,加密手段,.数据解析
- ios网络请求 get——post 区别
- Android 网络请求通用的get与post方式
- iOS 网络编程(HTTP 同步GET请求,同步POST请求,异步GET请求,异步POST请求)
- iOS- 网络开发GET请求和POST请求实现ip地址来源查询
- ios网络学习------1get post异步请求
- 基于HTTP 协议的GET和POST请求服务
- 网络请求 http get post 一