package com.lzy.demo.okgo;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;
import com.lzy.demo.R;
import com.lzy.demo.base.BaseDetailActivity;
import com.lzy.demo.callback.DialogCallback;
import com.lzy.demo.callback.StringDialogCallback;
import com.lzy.demo.model.LzyResponse;
import com.lzy.demo.model.ServerModel;
import com.lzy.demo.utils.ColorUtils;
import com.lzy.demo.utils.Urls;
import com.lzy.okgo.OkGo;
import butterknife.Bind;
import butterknife.ButterKnife;
import okhttp3.Call;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import okhttp3.Response;
public class MethodActivity extends BaseDetailActivity implements AdapterView.OnItemClickListener {
@Bind(R.id.gridView) GridView gridView;
private String[] methods = {"GET", "HEAD\n只有请求头", "OPTIONS\n获取服务器支持的HTTP请求方式",//
"POST", "PUT\n用法同POST主要用于创建资源", "DELETE\n与PUT对应主要用于删除资源"};
@Override
protected void onActivityCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_method);
ButterKnife.bind(this);
setTitle("请求方法演示");
gridView.setAdapter(new MyAdapter());
gridView.setOnItemClickListener(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
//Activity销毁时,取消网络请求
OkGo.getInstance().cancelTag(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
OkGo.get(Urls.URL_METHOD)//
.tag(this)//
.headers("header1", "headerValue1")//
.params("param1", "paramValue1")//
.execute(new DialogCallback<LzyResponse<ServerModel>>(this) {
@Override
public void onSuccess(LzyResponse<ServerModel> responseData, Call call, Response response) {
handleResponse(responseData.data, call, response);
}
@Override
public void onError(Call call, Response response, Exception e) {
super.onError(call, response, e);
handleError(call, response);
}
});
break;
case 1:
OkGo.head(Urls.URL_METHOD)//
.tag(this)//
.headers("header1", "headerValue1")//
.params("param1", "paramValue1")//
.execute(new StringDialogCallback(this) {
@Override
public void onSuccess(String s, Call call, Response response) {
handleResponse(s, call, response);
}
@Override
public void onError(Call call, Response response, Exception e) {
super.onError(call, response, e);
handleError(call, response);
}
});
break;
case 2:
OkGo.options(Urls.URL_METHOD)//
.tag(this)//
.headers("header1", "headerValue1")//
.params("param1", "paramValue1")//
.execute(new DialogCallback<LzyResponse<ServerModel>>(this) {
@Override
public void onSuccess(LzyResponse<ServerModel> responseData, Call call, Response response) {
handleResponse(responseData.data, call, response);
}
@Override
public void onError(Call call, Response response, Exception e) {
super.onError(call, response, e);
handleError(call, response);
}
});
break;
case 3:
OkGo.post(Urls.URL_METHOD)//
.tag(this)//
.headers("header1", "headerValue1")//
.params("param1", "paramValue1")//
.params("param2", "paramValue2")//
.params("param3", "paramValue3")//
.isMultipart(true) //强制使用 multipart/form-data 表单上传(只是演示,不需要的话不要设置。默认就是false)
.execute(new DialogCallback<LzyResponse<ServerModel>>(this) {
@Override
public void onSuccess(LzyResponse<ServerModel> responseData, Call call, Response response) {
handleResponse(responseData.data, call, response);
}
@Override
public void onError(Call call, Response response, Exception e) {
super.onError(call, response, e);
handleError(call, response);
}
});
break;
case 4:
OkGo.put(Urls.URL_METHOD)//
.tag(this)//
.headers("header1", "headerValue1")//
.params("param1", "paramValue1")//
.execute(new DialogCallback<LzyResponse<ServerModel>>(this) {
@Override
public void onSuccess(LzyResponse<ServerModel> responseData, Call call, Response response) {
handleResponse(responseData.data, call, response);
}
@Override
public void onError(Call call, Response response, Exception e) {
super.onError(call, response, e);
handleError(call, response);
}
});
break;
case 5:
OkGo.delete(Urls.URL_METHOD)//
.tag(this)//
.headers("header1", "headerValue1")//
.params("param1", "paramValue1")//
.requestBody(RequestBody.create(MediaType.parse("text/plain;charset=utf-8"), "这是要上传的数据"))//
.execute(new DialogCallback<LzyResponse<ServerModel>>(this) {
@Override
public void onSuccess(LzyResponse<ServerModel> responseData, Call call, Response response) {
handleResponse(responseData.data, call, response);
}
@Override
public void onError(Call call, Response response, Exception e) {
super.onError(call, response, e);
handleError(call, response);
}
});
break;
}
}
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return methods.length;
}
@Override
public String getItem(int position) {
return methods[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = new TextView(getApplicationContext());
}
TextView textView = (TextView) convertView;
textView.setGravity(Gravity.CENTER);
textView.setHeight(200);
textView.setText(getItem(position));
textView.setTextColor(Color.WHITE);
textView.setTextSize(16);
textView.setBackgroundColor(ColorUtils.randomColor());
return textView;
}
}
}