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. vue中子组件通过$parent操作父组件的参数或者方法

    先看一个简单的demo: 父组件添加一个弹框,弹框的内容是另外导入的一个子组件: <Modal v-model="accountDetailsModal" class=&qu ...

  2. 各种height 以及判断滚动条是否已拉到页面最底部

    DTD已声明 IEdocument.documentElement.scrollHeight  浏览器所有内容高度 ,document.body.scrollHeight  浏览器所有内容高度docu ...

  3. Shell脚本中实现自动补全功能

    对于Linuxer来说,自动补全是再熟悉不过的一个功能了.当你在命令行敲下部分的命令时,肯定会本能地按下Tab键补全完整的命令,当然除了命令补全之外,还有文件名补全. Bash-completion ...

  4. PostgreSQL 使用小点

    1.timestamp 有分时区和无时区(减少使用),8个字节,包含日期和时间,范围是:公元前4713 - 公元294276.底层存储的是时间戳,这对任何地区的都一样,而具体时间显示则可从数据库层面设 ...

  5. visual studio code 在 mac 下按 F12无效

    vsc 默认通过 F12可以查看定义(Go to Definition),可以查看类或方法的定义: 但是在 mac 环境下,有时按 F12并不生效,但是菜单栏的 Go 选项是被启动的,此时需要进行 2 ...

  6. git第十节--git hub

    github 是一个开源的协作社区 github 插件octtree 为别人的仓库做贡献 fork 别人仓库内容到自己的个人仓库 git clone 到本地进行开发push 到个人仓库 提PR(pul ...

  7. JavaWeb学习 (七)————HttpServletResponse对象(一)

    一.HttpServletResponse对象介绍

  8. C#实现加简单的Http请求

    通过.Net中的两个类 HttpWebRequest 类, HttpWebResponse 类来实现Http的请求,响应处理. 第一个小测试是请求百度首页( http://www.baidu.com ...

  9. 如何为你的树莓派安装一个WIN10系统?(非iot)

    Windows10 ARM版,是的,这次并非IoT版,而是功能与PC一致的ARM版.需要注意的是,这个方法并非官方提供的,可用性上会有一些坑,热衷于尝试的玩家可以一试! 准备项目:树莓派3B以上型号, ...

  10. c# 后台拼接分页Html

    public static string ReplaceStr(string originalStr, string oldStr, string newStr) { if (string.IsNul ...