概述
public class HttpUtils<T> {
private HttpUtils (){}
public static class HttpUtilsIns{
private static HttpUtils httpUtils = new HttpUtils();
}
public static HttpUtils getInstance(){
return HttpUtilsIns.httpUtils;
}
@SuppressLint("HandlerLeak")
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
T t = (T) msg.obj;
mCallBackData.onResponse(t);
}
};
private CallBackData mCallBackData;
public void getData(String url,final Class<T> tClass,final CallBackData callBackData){
this.mCallBackData = callBackData;
OkHttpClient okHttpClient = new OkHttpClient.Builder().readTimeout(5,TimeUnit.SECONDS).writeTimeout(5,TimeUnit.SECONDS).build();
Request request = new Request.Builder().url(url).get().build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
Gson gson = new Gson();
T t = gson.fromJson(string, tClass);
Message message = handler.obtainMessage();
message.obj = t;
handler.sendMessage(message);
}
});
}
//HashMap<String,String> hashMap
public void postData(String url, final Class<T> tClass, final CallBackData callBackData){
this.mCallBackData = callBackData;
OkHttpClient okHttpClient = new OkHttpClient.Builder()
//.addNetworkInterceptor(new LogginInterceptor())
.readTimeout(5, TimeUnit.SECONDS)
.writeTimeout(5, TimeUnit.SECONDS)
.build();
FormBody.Builder builder = new FormBody.Builder();
FormBody formBody = builder.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
Gson gson = new Gson();
T t = gson.fromJson(string, tClass);
Message message = handler.obtainMessage();
message.obj = t;
handler.sendMessage(message);
}
});
}
public interface CallBackData<D>{
public void onResponse(D d);
public void onFail(String err);
}
}
(随便发的代码块)
public class BasePresenter<V> {
private V view;
public V getView() {
return view;
}
public void setView(V view) {
this.view = view;
}
public void detachView() {
this.view = null;
}
}
public class MainPresenter extends BasePresenter<IMainView<LoginBean>>{
private final HttpUtils httpUtils;
public MainPresenter(){
httpUtils = HttpUtils.getInstance();
}
public void loadData(String acc,String pwd){
httpUtils.postData(Constant.LOGIN+"?phone="+acc+"&pwd="+pwd,LoginBean.class,new HttpUtils.CallBackData<LoginBean>() {
@Override
public void onResponse(LoginBean loginBean) {
getView().onSuccess(loginBean);
}
@Override
public void onFail(String err) {
getView().onErr(err);
}
});
}
}
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(setSelfView());
initView();
initData();
}
public abstract void initView();
public abstract void initData();
public abstract int setSelfView();
}
public class MainActivity extends BaseActivity implements IMainView<LoginBean> {
private Button button;
private EditText editText1;
private EditText editText2;
private MainPresenter presenter;
private Button button3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
}
@Override
public void initView() {
button = findViewById(R.id.button1);
button3 = findViewById(R.id.button3);
editText1 = findViewById(R.id.editText1);
editText2 = findViewById(R.id.editText2);
}
@Override
public void initData() {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String acc = editText1.getText().toString();
String pwd = editText2.getText().toString();
presenter = new MainPresenter();
presenter.setView(MainActivity.this);
presenter.loadData(acc,pwd);
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,RegisterActivity.class));
}
});
}
@Override
public int setSelfView() {
return R.layout.activity_main;
}
@Override
public void onSuccess(LoginBean loginBean) {
if(loginBean.getStatus().equals("0000")){
startActivity(new Intent(MainActivity.this,NewsActivity.class));
Toast.makeText(this, ""+loginBean.getMessage(), Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, ""+loginBean.getMessage(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onErr(String errMsg) {
}
@Override
protected void onDestroy() {
super.onDestroy();
presenter.detachView();
}
}
public interface IMainView<T> {
public void onSuccess(T t);
public void onErr(String errMsg);
}
最后
以上就是羞涩大米为你收集整理的Android请求网络工具类(OKHttp)的全部内容,希望文章能够帮你解决Android请求网络工具类(OKHttp)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复