bean实体类请求:

1.bean

 import java.io.Serializable;
import com.alibaba.fastjson.annotation.JSONField; public class UserInfo implements Serializable {
private static final long serialVersionUID = 145641645L; @JSONField(name = "data")
private String data;
@JSONField(name = "error")
private int error;
@JSONField(name = "msg")
private String msg; public UserInfo() {
super();
} public UserInfo(String data, int error, String msg) {
super();
this.data = data;
this.error = error;
this.msg = msg;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public int getError() {
return error;
}
public void setError(int error) {
this.error = error;
} public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
} public boolean isSucceed() {
return == error;
} }

2.针对bean的request

 import com.alibaba.fastjson.JSON;
import com.yolanda.nohttp.Headers;
import com.yolanda.nohttp.JsonObjectRequest;
import com.yolanda.nohttp.RequestMethod;
import com.yolanda.nohttp.RestRequest;
import com.yolanda.nohttp.StringRequest;
import com.yolanda.nohttptest.bean.UserInfo; public class UserInfoRequest extends RestRequest<UserInfo> { public UserInfoRequest(String url, RequestMethod requestMethod) {
super(url, requestMethod);
}
public UserInfoRequest(String url) {
super(url);
}
@Override
public String getAccept() {
return JsonObjectRequest.ACCEPT;
}
@Override
public UserInfo parseResponse(String url, Headers responseHeaders, byte[] responseBody) {
UserInfo info = null;
String string = StringRequest.parseResponseString(url, responseHeaders, responseBody);
try {
info = JSON.parseObject(string, UserInfo.class);
} catch (Exception e) {
info = new UserInfo();
}
return info;
}
}

3.具体在activity中使用:

 public class ObjectActivity extends Activity implements View.OnClickListener {

     private final int NOHTTP_LOGIN = 0x01;
private final int NOHTTP_LOGOUT = 0x02; private TextView tvResult; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_object);
findViewById(R.id.btn_login).setOnClickListener(this);
findViewById(R.id.btn_logout).setOnClickListener(this);
tvResult = (TextView) findViewById(R.id.tv_result);
} @Override
public void onClick(View v) {
if (v.getId() == R.id.btn_login) {
UserInfoRequest request = new UserInfoRequest(Constants.LOGIN, RequestMethod.GET);
request.add("userName", "yolanda");
request.add("userPwd", "");
CallServer.getInstance().add(this, request, callBack, NOHTTP_LOGIN, true, false, true);
} else {
UserInfoRequest request = new UserInfoRequest(Constants.LOGOUT, RequestMethod.GET);
CallServer.getInstance().add(this, request, callBack, NOHTTP_LOGOUT, true, false, true);
}
} private HttpCallBack<UserInfo> callBack = new HttpCallBack<UserInfo>() { @Override
public void onSucceed(int what, Response<UserInfo> response) {
UserInfo info = response.get();
if (what == NOHTTP_LOGIN) {// 处理登录结果
if (info.isSucceed()) {
tvResult.setText("登录接口结果:" + info.getData());
}
} else if (what == NOHTTP_LOGOUT) {// 处理登出结果
if (info.isSucceed()) {
tvResult.setText("退出接口结果:" + info.getData());
}
}
} @Override
public void onFailed(int what, String url, Object tag, Exception exception, int responseCode, long networkMillis) {
tvResult.setText("请求失败");
}
};
}

可以解析所有JavaBean的自定义请求

 public class JavaBeanRequest<E> extends RestRequest<E> {

     private Class<E> clazz;

     public JavaBeanRequest(String url, RequestMethod requestMethod, Class<E> clazz) {
super(url, requestMethod);
this.clazz = clazz;
} public JavaBeanRequest(String url, Class<E> clazz) {
this(url, RequestMethod.GET, clazz);
} @Override
public E parseResponse(String url, Headers responseHeaders, byte[] responseBody) {
String result = StringRequest.parseResponseString(url, responseHeaders, responseBody);
try {
return JSON.parseObject(result, clazz);
} catch (Exception e) {
E instance = null;
try {
// 但是前提是传进来的JavaBean必须提供了默认实现
instance = clazz.newInstance();
} catch (InstantiationException e1) {
} catch (IllegalAccessException e1) {
}
return instance;
}
} @Override
public String getAccept() {
return JsonObjectRequest.ACCEPT;
} }

activity

Request<ServerBean> request = new JavaBeanRequest<ServerBean>(url, ServerBean.class);
CallServer.getInstance().add(this, request, callBack, , true, false, true);

NoHttp封装--02 自定义请求的更多相关文章

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

    MainActivity: public class MainActivity extends Activity implements View.OnClickListener { .... @Ove ...

  2. Springboot学习06-Spring AOP封装接口自定义校验

    Springboot学习06-Spring AOP封装接口自定义校验 关键字 BindingResult.Spring AOP.自定义注解.自定义异常处理.ConstraintValidator 前言 ...

  3. 封装的ajax请求

    在做登录注册这类提交表单数据时,我们经常需要局部刷新网页来验证用户输入的信息,这就需要用到ajax请求,我们通常需要获取表单中的数据,发起ajax请求,通过服务程序,与数据库的数据进行比对,判断信息的 ...

  4. NoHttp封装--01

    NoHttpActivity public class NoHttpActivity extends Activity implements View.OnClickListener { privat ...

  5. 02 flask 请求钩子、异常捕获、上下文、Flask-Script 扩展、jinja2 模板引擎、csrf防范

    一 请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个 ...

  6. element-ui上传组件,通过自定义请求上传文件

    记录使用element-ui上传组件,通过自定义请求上传文件需要注意的地方. <el-upload ref="uploadMutiple" :auto-upload=&quo ...

  7. uniapp封装uni.request请求

    封装一个uniapp请求 新建一个http.js文件封装uni.request const BASE_URL = process.env.NODE_ENV === 'development' ? '' ...

  8. Android 网络请求库volley的封装,让请求更方便

    首先封装一下volley 请求 public class CustomRequest extends StringRequest { private static final String TAG = ...

  9. 使用xib封装一个自定义view的步骤

    使用xib封装一个自定义view的步骤 1> 新建一个继承UIView的自定义view,假设类名叫做(MJAppView) 2> 新建一个MJAppView.xib文件来描述MJAppVi ...

随机推荐

  1. kubernetes集群搭建(4):node节点安装

    下列所有操作需要在所有node节点上操作,并注意红色部分的修改 1.node节点不需要安装etcd来存储相关信息 yum -y install flannel kubernetes 2.修改flann ...

  2. call、apply、bind的用法

    数组追加 //用apply拼接 var arr1=[12,'name:foo',2048]; var arr2=['Joe','Hello']; Array.prototype.push.apply( ...

  3. github相关指令学习

    正在廖雪峰官网学习关于git的相关知识,已经不是第一次来学习,但是忘得太快,索性这次边学边记录笔记,加深记忆,方便后期查看 1.找到一个合适的地方,鼠标右键 Git Bush Here ,新建文件夹, ...

  4. 关于JAVAweb的一些东西

    1.Servlet 1.Servlet访问URL映射配置 <servlet> <servlet-name>ServletDemo1</servlet-name> & ...

  5. MySQL数据库设计规范

    1. 规范背景与目的 MySQL数据库与 Oracle. SQL Server 等数据库相比,有其内核上的优势与劣势.我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短.本规范旨在帮助或指导R ...

  6. 动态生成二维码并利用canvas合成出一张图片(类似海报、分享页)

    在前端开发并打算推广一个APP的时候,推广页是免不了的,而推广页的展示方式一般是给人家一个二维码,让别人自己去安装APP,这样前段任务也达到了,这次写这篇文章的原因主要还是总结一下,其中有很多不完善的 ...

  7. FFmpeg数据结构AVBuffer

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10399048.html AVBuffer是FFmpeg中很常用的一种缓冲区,缓冲区使用引 ...

  8. [Luogu1365] WJMZBMR打osu! / Easy

    Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有 \(n\) 次点击要做,成功了就是o,失败了就是x,分数是按com ...

  9. 数据分析之pandas模块

    一.Series 类似于一位数组的对象,第一个参数为数据,第二个参数为索引(索引可以不指定,就默认用隐式索引) Series(data=np.random.randint(1,50,(10,))) S ...

  10. Linux中rm命令详解

    linux下rm命令使用详解---linux删除文件或目录命令 用户可以用rm命令删除不需要的文件.该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除 ...