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. Bootstrap 3的box-sizing样式导致UMeditor控件的图片无法正常缩放

    UMeditor组件是百度提供的一套开源的web在线所见即所得富文本编辑器,是UEditor的简化版,UM的主要特点就是容量和加载速度上的改变,主文件的代码量为139k,而且放弃了使用传统的ifram ...

  2. 用vue-cli脚手架搭建一个仿网易云音乐的全家桶vue项目

    一,vue-cli环境搭建 1,全局安装webpack npm install webpack -g 2,安装vue脚手架 npm install vue-cli -g 3,新建一个新的project ...

  3. IO流查找文件然后写入TXT文档

    今天领导让分析日志,把日志中所有登录过的员工信息都拿出来.于是.把日志摘下来谢了这段代码 import java.io.BufferedReader;import java.io.BufferedWr ...

  4. 如何开始DDD

    在开始DDD之前,你需要了解DDD的一些基础知识,聚合(AggregateRoot).实体(Entity).值对象(ValueObject),工厂(Factory),仓储(Repository)和领域 ...

  5. 喜大普奔,SITE4J网站上线啦

    喜大普奔,SITE4J网站上线啦: 你懂的:https://peterchenhdu.club/

  6. Kafka实战-Kafka到Storm

    1.概述 在<Kafka实战-Flume到Kafka>一文中给大家分享了Kafka的数据源生产,今天为大家介绍如何去实时消费Kafka中的数据.这里使用实时计算的模型——Storm.下面是 ...

  7. java ee期末项目相关

    1.项目简介 本项目是对纸杯生产进行管理的的一个系统,从前端接收到订单,然后根据订单内容进行纸杯的生产.如下为该系统的总流程图: 1.项目系统架构图 3.系统用例图 4.ER图 主要的代码和相关文件见 ...

  8. Java并发编程笔记之SimpleDateFormat源码分析

    SimpleDateFormat 是 Java 提供的一个格式化和解析日期的工具类,日常开发中应该经常会用到,但是由于它是线程不安全的,多线程公用一个 SimpleDateFormat 实例对日期进行 ...

  9. 深入理解苹果系统(Unicode)字符串的排序方法

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由iminder发表于云+社区专栏 Unicode编码 我们知道计算机是不能直接处理文本的,而是和数字打交道.因此,为了表示文本,就建立 ...

  10. break与continue,return结束循环区别

    break是跳出一层循环,continue是结束一趟循环 ,return才是结束所有层循环! 如果有多层for循环,break会跳出当前这一层,去执行最外层循环(而不是退出所有层循环);而contin ...