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. jdk的安装和配置环境变量

    一.下载 JDK是个免费的东东,所以大家不要去百度啥破解版了,直接去官网下载最新版本吧,比较安全,官网地址:http://www.oracle.com/technetwork/java/index.h ...

  2. 使用diskpart命令格式化U盘

    在安装各种linux系统时,经常要使用SD卡,这里就出了个问题,就是SD卡被linux格式化之后无法在widdows下使用. 并且windows下的格式化按键对它毫无作用.笔者在摸索的过程中,找到了格 ...

  3. Python - 使用Pyinstaller将Python代码生成可执行文件

    1 - Pyinstaller简介 Home-page: http://www.pyinstaller.org PyInstaller是一个能够在多系统平台(Windows.*NIX.Mac OS)上 ...

  4. HoloLens开发手记 - 使用混合现实捕捉 Using mixed reality capture

    HoloLens给了用户混合真实世界和数字世界的体验.混合现实捕捉(MRC)使得你可以保存这种体验到图片或者视频.这使得你可以分享你的体验给其他人,这允许他们能看到和你所看到一样的全息图像.这些视频和 ...

  5. python --第三方登录--微博

    理解第三方登录的流程: 用户向本地应用商城发起请求,我要用微博进行登录 我们的商城凑一个url让用户跳转到第三方应用的url(微博的登录页面) 用户在该界面点击输入用户名密码之后,点击授权. 微博有个 ...

  6. nohup后台执行

    由于使用nohup时,会自动将输出写入nohup.out文件中,如果文件很大的话,nohup.out就会不停的增大,这是我们不希望看到的,因此,可以利用/dev/null来解决这个问题. nohup ...

  7. 在mpvue中使用map如何避坑

    最近在做一个需求,当用户放大地图到某个级别时,自动显示marker的callout标签,当小于这个缩放级别时,则隐藏callout.然而在我实现的过程中,却发现一个严重的问题:当我操作marker数据 ...

  8. SpringBoot的幕后推手...

    一.背景 ​ 这两年随着微服务的盛行,SpringBoot框架水到渠成的得到了高曝光,作为程序猿的我们,现在要是不知道一点SpringBoot相关的东西,貌似出去找工作都会被深深地鄙视,不过在我们开始 ...

  9. 从零开始学 Web 之 JavaScript(五)面向对象

    大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...

  10. PHP-CPP开发扩展(五)

    PHP-CPP是一个用于开发PHP扩展的C++库.本节讲解如何在C++中实现PHP类. 类和对象 类和对象 怎样在PHP-CPP里写出PHP的类呢?很简单,看下面的例子: main.cpp /** * ...