NoHttpActivity

 public class NoHttpActivity 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_nohttp);
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) {
FastJsonRequest request = new FastJsonRequest(Constants.LOGIN, RequestMethod.GET);
request.add("userName", "yolanda");
request.add("userPwd", "");
CallServer.getInstance().add(this, request, callBack, NOHTTP_LOGIN, true, false, true);
} else {
FastJsonRequest request = new FastJsonRequest(Constants.LOGOUT, RequestMethod.GET);
CallServer.getInstance().add(this, request, callBack, NOHTTP_LOGOUT, true, false, true);
}
} private HttpCallBack<JSONObject> callBack = new HttpCallBack<JSONObject>() { @Override
public void onSucceed(int what, Response<JSONObject> response) {
if (what == NOHTTP_LOGIN) {// 处理登录结果
JSONObject jsonObject = response.get();
tvResult.setText("登录接口数据:" + jsonObject.getString("data"));
} else if (what == NOHTTP_LOGOUT) {// 处理登出结果
JSONObject jsonObject = response.get();
tvResult.setText("退出接口数据:" + jsonObject.getString("data"));
}
} @Override
public void onFailed(int what, String url, Object tag, Exception exception, int responseCode, long networkMillis) {
tvResult.setText("请求失败");
}
}; }

CallServer:

 public class CallServer {

     private static CallServer instance;

     private RequestQueue queue;

     public synchronized static CallServer getInstance() {
if (instance == null) {
instance = new CallServer();
}
return instance;
} private CallServer() {
queue = NoHttp.newRequestQueue();
} /**
* 添加一个请求到请求队列
*
* @param context 上下文
* @param request 请求对象
* @param callBack 接受回调结果
* @param what what,当多个请求用同一个responseListener接受结果时,用来区分请求
* @param isShowDialog 是否显示dialog
* @param isCanCancel 请求是否能被用户取消
* @param isShowError 是否提示用户错误信息
*/
public <T> void add(Context context, Request<T> request, HttpCallBack<T> callBack, int what, boolean isShowDialog, boolean isCanCancel, boolean isShowError) {
queue.add(what, request, new ResponseListener<T>(request, context, callBack, isShowDialog, isCanCancel, isShowError));
} }

ResponseListener:

 public class ResponseListener<T> implements OnResponseListener<T> {

     private Request<T> mRequest;

     private WaitDialog mDialog;

     private HttpCallBack<T> callBack;

     private boolean isShowError;

     public ResponseListener(Request<T> request, Context context, HttpCallBack<T> callBack, boolean isShowDialog, boolean isCanCancel, boolean isShowError) {
this.mRequest = request;
this.callBack = callBack;
this.isShowError = isShowError;
if (context != null && isShowDialog) {
mDialog = new WaitDialog(context);
mDialog.setCancelable(isCanCancel);
mDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
mRequest.cancel(true);
}
});
}
} @Override
public void onStart(int what) {
if (mDialog != null && !mDialog.isShowing())
mDialog.show();
} @Override
public void onSucceed(int what, Response<T> response) {
if (callBack != null)
callBack.onSucceed(what, response);
} @Override
public void onFailed(int what, String url, Object tag, Exception exception, int responseCode, long networkMillis) {
if (isShowError) {
if (exception instanceof ClientError) {// 客户端错误
Toast.show("客户端发生错误");
} else if (exception instanceof ServerError) {// 服务器错误
Toast.show("服务器发生错误");
} else if (exception instanceof NetworkError) {// 网络不好
Toast.show("请检查网络");
} else if (exception instanceof TimeoutError) {// 请求超时
Toast.show("请求超时,网络不好或者服务器不稳定");
} else if (exception instanceof UnKnownHostError) {// 找不到服务器
Toast.show("未发现指定服务器");
} else if (exception instanceof URLError) {// URL是错的
Toast.show("URL错误");
} else if (exception instanceof NotFoundCacheError) {
Toast.show("没有发现缓存");
} else {
Toast.show("未知错误");
}
}
if (callBack != null)
callBack.onFailed(what, url, tag, exception, responseCode, networkMillis);
} @Override
public void onFinish(int what) {
if (mDialog != null && mDialog.isShowing())
mDialog.dismiss();
} }

HttpCallBack

 public interface HttpCallBack<T> {

     /**
* Server correct response to callback when an HTTP request.
*
* @param what the credit of the incoming request is used to distinguish between multiple requests.
* @param response in response to the results.
*/
void onSucceed(int what, Response<T> response); /**
* When there was an error correction.
*
* @param what the credit of the incoming request is used to distinguish between multiple requests.
* @param url url.
* @param tag tag of request callback.
* @param exception error message for request.
* @param responseCode server response code.
* @param networkMillis request process consumption time.
*/
void onFailed(int what, String url, Object tag, Exception exception, int responseCode, long networkMillis); }

FastJsonRequest:自定义FastJsonRequest对象,所有的自定义对象都要继承{@link RestReqeust}

 public class FastJsonRequest extends RestRequest<JSONObject> {

     public FastJsonRequest(String url, RequestMethod requestMethod) {
super(url, requestMethod);
} public FastJsonRequest(String url) {
super(url);
} /**
* 高速服务端你能接受的数据类型是什么
*/
@Override
public String getAccept() {
return JsonObjectRequest.ACCEPT;
} /**
* @param url 请求的url
* @param responseHeaders 服务端的响应头
* @param 服务端的响应数据
* @return 你解析后的对象
*/
@Override
public JSONObject parseResponse(String url, Headers responseHeaders, byte[] responseBody) {
return parse(url, responseHeaders, responseBody);
} /**
* 解析服务端数据成{@link JsonObject}
*
* @param url
* @param responseHeaders
* @param responseBody
* @return
*/
public static JSONObject parse(String url, Headers responseHeaders, byte[] responseBody) {
String string = StringRequest.parseResponseString(url, responseHeaders, responseBody);
JSONObject jsonObject = null;
try {
jsonObject = JSON.parseObject(string);
} catch (Exception e) {// 可能返回的数据不是json,或者其他异常
string = "{}";
jsonObject = JSON.parseObject(string);
}
return jsonObject;
} }

WaitDialog:

 public class WaitDialog extends ProgressDialog {

     public WaitDialog(Context context) {
super(context);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setCanceledOnTouchOutside(false);
setProgressStyle(STYLE_SPINNER);
setMessage("正在请求,请稍候…");
} }

Constants

public class Constants {

    private static final String SERVER = "http://192.168.1.116/HttpServer/";

    /**
* 登录接口
*/
public static final String LOGIN = SERVER + "login"; /**
* 退出登录接口
*/
public static final String LOGOUT = SERVER + "logout"; }

NoHttp封装--01的更多相关文章

  1. # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结

    095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  2. 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)

    094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  3. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  4. 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)

    092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  5. 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)

    091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  6. 090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 04 使用包进行类管理(2)——导入包

    090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  7. 089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 使用包进行类管理(1)——创建包

    089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  8. 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现

    088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...

  9. 087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点

    087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...

随机推荐

  1. 转载 Python中关键字global与nonlocal的区别

    转载自CSDN 雁丘1990, 原文地址: https://blog.csdn.net/xcyansun/article/details/79672634 这篇文章写的很赞, 条理清晰, 分析循序渐进 ...

  2. java开发,年薪15W的你和年薪50W的他的差距

      在这个IT系统动辄就是上亿流量的时代,Java作为大数据时代应用最广泛的语言,诞生了一批又一批的新技术,包括HBase.Hadoop.MQ.Netty.SpringCloud等等 .   一些独角 ...

  3. web自动化测试---测试中其他一些常用操作

    一些其他常用操作如下: 1.最大化浏览器窗口 driver.maximize_window() 2.后退 driver.back() 3.前进 driver.forward() 4.刷新操作 driv ...

  4. odoo开发笔记 -- 后台日志输出及分析

    odoo开发笔记 -- 后台日志输出及分析 附:日志分析软件

  5. keras中的mini-batch gradient descent (转)

    深度学习的优化算法,说白了就是梯度下降.每次的参数更新有两种方式. 一. 第一种,遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度.这种方法每更新一次参数都要把数据集里的所有样本都看 ...

  6. 【Java基本功】很多人经常忽视的Java基础知识点

    *.Java文件 问题:一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 答案:可以有多个类,但只能有一个public的类,并且public的类名必须与文件 ...

  7. spring-session-data-redis解决session共享的问题

    分布式系统要做到用户友好,需要对用户的session进行存储,存储的方式有以下几种: 本地缓存 数据库 文件 缓存服务器 可以看一些不同方案的优缺点 1.本地机器或者本地缓存.优点:速度快  缺点:服 ...

  8. 微信分享JSSDK-invalid signature签名错误的解决方案

    核对官方步骤,确认签名算法. 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验. 确认con ...

  9. 原生js格式化json工具

    json格式化小工具,原生js编写,直接上代码: <!DOCTYPE html> <html lang="en"> <head> <met ...

  10. Java语法之注解

    注解其实在其他语言也有,只是叫法不一样,在C#中叫特性,其实都是一个意思.今天就是了解下Java的注解. 一.什么是注解 我们先看官方解释:它提供了一种安全的类似注释的机制,用来将任何的信息或元数据( ...