compile ‘com.squareup.okhttp3:okhttp:3.5.0’
import android.content.Context;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
/**
* Created by sunzl on 16/12/28.
*/
interface CompleteHttp{
void complete(JSONObject obj);
}
public class HttpManager {
static public void post(String url, final Context context, final CompleteHttp completeHttp){
//创建okHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建一个Request
final Request request = new Request.Builder()
.url(url)
.build();
//new call
Call call = mOkHttpClient.newCall(request);
//请求加入调度
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.e("M",e.getMessage());
App.getHandler().post( new Runnable()
{
@Override
public void run()
{
new MyDialog.Builder(context).setTitle("友情提示").setMessage("网络异常")
.setPositiveButton("确定", null)
.show();
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String str = response.body().string();
Log.e("1",str);
try {
final JSONObject obj = new JSONObject(str);
if (obj.getInt("code") == 1) {
App.getHandler().post(new Runnable() {
@Override
public void run() {
try {
completeHttp.complete(obj.getJSONObject("data"));
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}else {
App.getHandler().post(new Runnable() {
@Override
public void run() {
try {
new MyDialog.Builder(context).setTitle("友情提示").setMessage(obj.getString("msg"))
.setPositiveButton("确定", null)
.show();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
}
在 android:name=”.App”
import android.app.Application;
import android.os.Handler;
import android.util.Log;
/**
* Created by sunzl on 16/12/28.
*/
public class App extends Application{
private static Handler handler;
public static Handler getHandler() {
return handler;
}
@Override
public void onCreate() {
super.onCreate();
Log.e("s","app");
handler = new Handler();
}
}
自定一个可以在前面显示的dialog
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
/**
* Created by sunzl on 16/12/28.
*/
public class MyDialog extends AlertDialog {
private TextView text;
public MyDialog(Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window window = getWindow();
window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
}
}