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. ffmpeg 视频实现各种特效

    直接上命令: //渐入i in.mp4 -vf fade=in:0:90 out.mp4                 //黑白                    i in.mp4 -vf lu ...

  2. [P2402] 奶牛隐藏

    二分答案+最大流. 对答案建图,若长度≤答案,连边即可.(先要预处理点对间的最短路) 当然得拆点,(否则,就此题而言,就会出现流量x-y不走x-y的最短路边的情况,而是走了一条路径 ,答案约束的仅仅是 ...

  3. 课程四(Convolutional Neural Networks),第三 周(Object detection) —— 0.Learning Goals

    Learning Goals: Understand the challenges of Object Localization, Object Detection and Landmark Find ...

  4. DeepLab 使用 Cityscapes 数据集训练模型

    原文地址:DeepLab 使用 Cityscapes 数据集训练模型 0x00 操作环境 OS: Ubuntu 16.04 LTS CPU: Intel® Core™ i7-4790K GPU: Ge ...

  5. Kafka项目实战-用户日志上报实时统计之分析与设计

    1.概述 本课程的视频教程地址:<Kafka实战项目之分析与设计>  本课程我通过一个用户实时上报日志案例作为基础,带着大家去分析Kafka这样一个项目的各个环节,从而对项目的整体设计做比 ...

  6. 音频标签化2:youtube-8m项目的训练、评估与测试

    之前小程介绍了使用机器学习的办法来解决"音频标签化"的问题,并且提到了训练样本audioset跟youtube-8m的dataset,而训练模型上也提到了youtube-8m的模型 ...

  7. Hibernate学习(五)———— hibernate一对一关系映射详解

    一.一对一关系的概述 一对一关系看起来简单,其实也挺复杂的.其中关系就包含了四种,单向双向和主键关联外键关联. 什么意思呢,也就是包含了单向一对一主键关联.双向一对一主键关联,单向一对一外键关联,双向 ...

  8. Hyperledger Fabric密码模块系列之BCCSP(三)

    fabric中通过工厂模式来生成bccsp实例,进而通过bccsp的接口来提供加密.解密.签名验证以及哈希等操作. fabric的factory工厂默认返回的bccsp实例是sw(也就是所有密码操作都 ...

  9. S5PV210 时钟体系分析

    S5PV210 时钟体系 如下面时钟结构图所示,S5PV210 中包含 3 大类时钟域, 分别是主系统时钟域(简称 MSYS).显示相关的时钟域(简称 DSYS). 外围设备的时钟域(简称 PSYS) ...

  10. 如何将自定义的搜索参数便捷的添加到js方式的bootstrap table的参数中

    页面: <div> <form id="exp_form"> 查询参数... <button type="button" oncl ...