Android官方通信框架Volley:解析VolleyError获取包体信息

接上一篇Fiddler抓Android设备报文,虽然有了抓包工具,但是如果遇到HTTP 500这样的问题,还是很麻烦,有没有一种方法可以直接在LOGCAT中看到html报文内容呢,这样就可以快速的定位问题。

现在网络上的教程对于HTTP请求错误都是这样处理的:

StringRequest stringRequest = new StringRequest(“http://www.baidu.com”,
new Response.Listener() {
@Override
public void onResponse(String response) {
Log.d(“TAG”, response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(“TAG”, error.getMessage(), error);
}
});

一句
Log.e(“TAG”, error.getMessage(), error);
打印出的错误信息非常有限:

08-20 20:48:03.606: E/LOGIN-ERROR(6656): null
08-20 20:48:03.606: E/LOGIN-ERROR(6656): com.android.volley.ServerError
08-20 20:48:03.606: E/LOGIN-ERROR(6656): at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:145)
08-20 20:48:03.606: E/LOGIN-ERROR(6656): at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:105)

加上Volley框架打印的错误

08-20 20:49:23.452: E/Volley(6656): [1437] BasicNetwork.performRequest: Unexpected response code 500 for

你也只能判断是服务器端出现问题,但是究竟是因为请求的参数或者方式不正确?还是服务器端哪里不对了?你是无法进一步做出改变的。

除了Fiddler抓包,就没有更好的办法了吗。

既然有错误抛出,那我们来分析一下抛出错误的VolleyError类吧。

上源码:

public class VolleyError extends Exception {
public final NetworkResponse networkResponse;

public VolleyError() {
networkResponse = null;
}

public VolleyError(NetworkResponse response) {
networkResponse = response;
}

public VolleyError(String exceptionMessage) {
super(exceptionMessage);
networkResponse = null;
}

public VolleyError(String exceptionMessage, Throwable reason) {
super(exceptionMessage, reason);
networkResponse = null;
}

public VolleyError(Throwable cause) {
super(cause);
networkResponse = null;
}
}

发现有一个networkResponse对象,这个对象我们猜测含有返回的全部消息。

阅读更多

利用Fiddler对Android设备HTTP请求进行抓包

最近在学习Android开发的时候,用Volley进行HTTP POST请求,可能是服务端写的有问题,总是返回500错误,Volley只返回了错误码,对Volley也不太熟悉,我们无法查看返回的HTTP的详细错误信息。

而且用浏览器通过表单构造POST请求没问题。

正在怀疑Android手机无法抓包的时候,搜到神贴,Fiddler抓真机发出的HTTP包。共享如下。

Fiddler是一个http调试代理,它能 够记录所有的你电脑和互联网之间的http通讯,Fiddler 可以也可以让你检查所有的http通讯,设置断点,以及Fiddle 所有的“进出”的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它仅仅暴露http通讯还有提供一个用户友好的格式。

对于Android开发的同事最头疼的事情莫过于真机抓包,然后Fiddler就可以帮助你解决这个难题

阅读更多

Android第三方推送

1、百度推送

http://developer.baidu.com/push

2、极光推送JPush

http://www.jpush.cn

3、国外推送服务

http://www.push-notification.org/

相关资料:

Android推送解决方案

http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378971.html

服务器推送消息到Android终端方法

http://www.liuzhaocn.com/?p=931

阅读更多

老罗和他的锤子们

我所知道的老罗这个人的所有信息,都是大家也能得到的公众信息。包括他的演讲视频,和演讲内容差不多的《我的奋斗》这本书,还有“罗永浩可爱多”的微博。所以我知道的老罗其人,是其在公众面前的形象与特点,我并不了解现实生活中老罗的思想与性格,同时并不比别人多知道些什么,我坦白交代,所以吐槽请轻吐。

如果用一句话总结来说,罗永浩是一个追求自由平等,开放的一个人。从小,老罗就不是一个按部就班,言听计从的小孩,这也是其巨大的创造性与韧性的基础。毫无疑问,老罗有今天的成就,还与其背后默默的奋斗是有关的,很多吐槽老罗吹牛逼的人,自己就做不到老罗的努力与拼搏。罗永浩的行事风格绝对不适合孔子的那一套道德理论,在传统的中国环境中也是特立独行,在此我不评论优劣性,我只是客观描述事实。他的这套我行我素、高调做事的风格为其迎来了非常多的粉丝,同时也惹了不少谩骂。亏了脸皮够厚,心理素质过硬,甚至强过了很多大腕明星。不管是微博还是演讲,老罗总是用自己或潇洒,或幽默,或真实的语言表达着自己想表达的意思,从来不装什么文人雅士,什么傻逼、牛逼字眼屡见不鲜。

阅读更多

【翻译】Android-Tools-Draw 9-patch

背景自适应且不失真问题的存在
制作自适应背景图片是UI开发的一个广泛问题,也是界面设计师渴望解决的问题,我相信我们彼此都深有体会。
比如,列表的背景图一定,但是列表的高度随着列表数据项会发生变化;标题栏的背景,无论横屏还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。

阅读更多

  • © 2011 知研片语
  • 京ICP备16042882号