NoHttp封装--02

Posted 安卓笔记侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NoHttp封装--02相关的知识,希望对你有一定的参考价值。

bean实体类请求:

1.bean

 1 import java.io.Serializable;
 2 import com.alibaba.fastjson.annotation.JSONField;
 3 
 4 public class UserInfo implements Serializable {
 5     private static final long serialVersionUID = 145641645L;
 6 
 7     @JSONField(name = "data")
 8     private String data;
 9     @JSONField(name = "error")
10     private int error;
11     @JSONField(name = "msg")
12     private String msg;
13 
14     public UserInfo() {
15         super();
16     }
17 
18     public UserInfo(String data, int error, String msg) {
19         super();
20         this.data = data;
21         this.error = error;
22         this.msg = msg;
23     }
24     public String getData() {
25         return data;
26     }
27     public void setData(String data) {
28         this.data = data;
29     }
30     public int getError() {
31         return error;
32     }
33     public void setError(int error) {
34         this.error = error;
35     }
36 
37     public String getMsg() {
38         return msg;
39     }
40     public void setMsg(String msg) {
41         this.msg = msg;
42     }
43 
44     public boolean isSucceed() {
45         return 1 == error;
46     }
47 
48 }

2.针对bean的request

 1 import com.alibaba.fastjson.JSON;
 2 import com.yolanda.nohttp.Headers;
 3 import com.yolanda.nohttp.JsonObjectRequest;
 4 import com.yolanda.nohttp.RequestMethod;
 5 import com.yolanda.nohttp.RestRequest;
 6 import com.yolanda.nohttp.StringRequest;
 7 import com.yolanda.nohttptest.bean.UserInfo;
 8 
 9 public class UserInfoRequest extends RestRequest<UserInfo> {
10 
11     public UserInfoRequest(String url, RequestMethod requestMethod) {
12         super(url, requestMethod);
13     }
14     public UserInfoRequest(String url) {
15         super(url);
16     }
17     @Override
18     public String getAccept() {
19         return JsonObjectRequest.ACCEPT;
20     }
21     @Override
22     public UserInfo parseResponse(String url, Headers responseHeaders, byte[] responseBody) {
23         UserInfo info = null;
24         String string = StringRequest.parseResponseString(url, responseHeaders, responseBody);
25         try {
26             info = JSON.parseObject(string, UserInfo.class);
27         } catch (Exception e) {
28             info = new UserInfo();
29         }
30         return info;
31     }
32 }

 

3.具体在activity中使用:

 1 public class ObjectActivity extends Activity implements View.OnClickListener {
 2 
 3     private final int NOHTTP_LOGIN = 0x01;
 4     private final int NOHTTP_LOGOUT = 0x02;
 5 
 6     private TextView tvResult;
 7 
 8     @Override
 9     protected void onCreate(Bundle savedInstanceState) {
10         super.onCreate(savedInstanceState);
11         setContentView(R.layout.activity_object);
12         findViewById(R.id.btn_login).setOnClickListener(this);
13         findViewById(R.id.btn_logout).setOnClickListener(this);
14         tvResult = (TextView) findViewById(R.id.tv_result);
15     }
16 
17     @Override
18     public void onClick(View v) {
19         if (v.getId() == R.id.btn_login) {
20             UserInfoRequest request = new UserInfoRequest(Constants.LOGIN, RequestMethod.GET);
21             request.add("userName", "yolanda");
22             request.add("userPwd", "123");
23             CallServer.getInstance().add(this, request, callBack, NOHTTP_LOGIN, true, false, true);
24         } else {
25             UserInfoRequest request = new UserInfoRequest(Constants.LOGOUT, RequestMethod.GET);
26             CallServer.getInstance().add(this, request, callBack, NOHTTP_LOGOUT, true, false, true);
27         }
28     }
29 
30     private HttpCallBack<UserInfo> callBack = new HttpCallBack<UserInfo>() {
31 
32         @Override
33         public void onSucceed(int what, Response<UserInfo> response) {
34             UserInfo info = response.get();
35             if (what == NOHTTP_LOGIN) {// 处理登录结果
36                 if (info.isSucceed()) {
37                     tvResult.setText("登录接口结果:" + info.getData());
38                 }
39             } else if (what == NOHTTP_LOGOUT) {// 处理登出结果
40                 if (info.isSucceed()) {
41                     tvResult.setText("退出接口结果:" + info.getData());
42                 }
43             }
44         }
45 
46         @Override
47         public void onFailed(int what, String url, Object tag, Exception exception, int responseCode, long networkMillis) {
48             tvResult.setText("请求失败");
49         }
50     };
51 }

 

以上是关于NoHttp封装--02的主要内容,如果未能解决你的问题,请参考以下文章

NoHttp封装--08 用一个实体类接收所有接口数据

NoHttp封装--06 NoHttp之队列队列优先级

NoHttp封装--03 cookie

NoHttp封装--07 自定义异步任务框架

NoHttp封装--05 文件下载

VSCode自定义代码片段14——Vue的axios网络请求封装