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