HttpClient
AsyncHttpClient
上面这两个库已经能很好的解决你日常开发APP的POST,GET请求,前提是设计师不挑战你,不然你真的很纠结。
期初我只想解决自己在APP开发中遇到的问题,因为代码写的不是很好,只是为了满足自己的那点需求而已。
=============================================
【1】更人性化的提示网络错误信息,而不是烦人的作者的英文提示.
【2】能更好的做好国际化.
【3】减少参数的烦人传递操作.
【4】能自动化的解决JSON解析问题,并传回相关类.
【5】能在请求过程中,取消请求,并且无任何操作.
=========================================
【基础框架无法解决的一些问题】
new AsyncHttpClient().post(url, params, new AsyncHttpResponseHandler() { @Override public void onSuccess(int arg0, Header[] arg1, byte[] responseBody) { String str = new String(responseBody); // ... ... } @Override public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) { // ... ... } }); }
上面的代码会遇到这种的问题,
如果你是一个追求用户体验和用户痛点的和好的程序员的人,
你会极力做好用户提示,还会想办法减少自己写代码的工作量.
下面的说出的种种问题,不是说那些开源库不好,只是举出他们无法帮我们做的事情,而需要我们改进的地方而已.
1. 如果网络是不存在的,可能会报异常,你能想象是什么异常错误,是英文的,对于一款APP来说,
你对用户提示这样错误信息是正确的么,是人性化的么?
正确的方法应该是显示,"网络错误"或者"网络未知错误" 告知用户,而且这样的提示信息人性化并且是可以国际化的,
要可以英文,日文,等等,而不是这样固定死的提示.
或者你可以这样说,我可以在程序前面加判断网络是否存在,确实是可以的,因为这样更人性化点,我们来看另一种错误.
2. 网络超时:
上面的提示信息确实让用户恼火,其实应该给用户提示 “网络超时”!! 而且这个“网络超时”这几个字应该可以国际化的.
3.JSON解析问题:
因为开源框架要考虑通用性问题,它将JSON,XML等等操作的解析交给你去做,这样是非常好的。
但是我只想做好一件事情,就是APP能和服务器通信,通信的过程是能更好,方便的解析数据,能让我写代码更方便。
我就在想,那为何不将这一块写进去,我不需要考虑那么多通用性,只关心自己如何写好APP就可以了。
String str = new String(responseBody); GJson.fromJson(str, class);
我只想和服务器通信,那我为何不封装起来,数据成功了,然后自己JSON解析,返回这个类就好了.
4.需要传入很多参数的时候,特别烦人.
RequestParams params = new RequestParams(); params.put("username", "冰雪情缘"); params.put("pwd3", "cc03e747a6afbbcbf8be7668acfebee5"); params.put("pwd1", "cc03e747a6afbbcbf8be7668acfebee5"); params.put("pwd2", "cc03e747a6afbbcbf8be7668acfebee5"); ... ... // 参数少还可以,参数很多,七,八个或者十多个怎么办?
于是我就想到,是否可以添加两个这样的方法
doHttpPost(url, parasm, class, callback)
doHttpPost(url, class, class, callback)
只需要新建一个类,将类的数据填充好,然后传进去,我反射自己填充到字典中去,岂不是很省事,而且这样有了类,看起来也舒服,也明了。
==========================================