您的位置:首页 > 理论基础 > 计算机网络

【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);
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  okhttp3