source:
http://blog.csdn.net/lmj623565791/article/details/37970961
fragment layout => 適用較多頁面
FrameLayout => 元件可以疊
2016年11月14日 星期一
2016年1月25日 星期一
HttpUrlConnection和HttpClient
source:
http://wangzhaoli.blog.51cto.com/7607113/1288000
http://wangzhaoli.blog.51cto.com/7607113/1288000
Android的网络通信的方式有两种:使用Socket或者HTTP,今天这一篇我们详细讲解使用HTTP实现的网络通信,HTTP又包括两种方式编程方式:
(1)HttpUrlConnection;
(2)HttpClient;
2016年1月15日 星期五
json 格式
source:
http://j796160836.pixnet.net/blog/post/30530326-%E7%9E%AD%E8%A7%A3json%E6%A0%BC%E5%BC%8F
json format:
http://www.jsoneditoronline.org
http://j796160836.pixnet.net/blog/post/30530326-%E7%9E%AD%E8%A7%A3json%E6%A0%BC%E5%BC%8F
JSON格式簡單來說,就是這二句重點:
--------------------------------
物件(object)用大括號 { }
{"subject":"Math","score":80}
用key-value的方式儲存
key-value就是指一個鍵值(key)對應一個值(value),跟變數很像
像是subject這個key有個值叫Math
score它的值為80
陣列(array)用中括號 [ ]
[0,4,5,2,7,8,3]
這裡的範例是使用數字,但也可以是文字、布林或者是陣列、物件、null。當然,混合就不用說了,絕對OK。
文字(text)的例子
["Tom", "John", "Amy", "Ivy"]
所以物件和陣列,某方面來說(不考慮資料損失),是可以互相轉換的
若 物件 -> 陣列
就會損失鍵值(key)的資料,留下值(value)
或是程式到時候指定說,要鍵值陣列(key array),就會把所有的鍵值(key)合併一起成陣列
或是程式到時候指定說,要鍵值陣列(key array),就會把所有的鍵值(key)合併一起成陣列
若 陣列 -> 物件
就可以將每個值編上數字
整個JSON格式文件之中,是不能使用註解的
這裡注意一點
json object的鍵值(key),一定要用文字做鍵值
json object的鍵值(key),一定要用文字做鍵值
以下是錯誤的
{0:"Tom", 1:"John", 2:"Amy", 3:"Ivy"} // error syntax
http://www.jsoneditoronline.org
android-async-http 相關資料
source:
http://blog.csdn.net/hil2000/article/details/13949513
1.简介
Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-async-http这个库可以大大的简化操作,它是基于Apache’s HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message 机制传递信息。
2.特性
(1)采用异步http请求,并通过匿名内部类处理回调结果
(2)http请求独立在UI主线程之外
(3)采用线程池来处理并发请求
(4)采用RequestParams类创建GET/POST参数
(5)不需要第三方包即可支持Multipart file文件上传
(6)大小只有25kb
(7)自动为各种移动电话处理连接断开时请求重连
(8)超快的自动gzip响应解码支持
(9)使用BinaryHttpResponseHandler类下载二进制文件(如图片)
(10) 使用JsonHttpResponseHandler类可以自动将响应结果解析为json格式
(11)持久化cookie存储,可以将cookie保存到你的应用程序的SharedPreferences中
3.使用方法
(1)到官网http://loopj.com/android-async-http/下载最新的android-async-http-1.4.4.jar,然后将此jar包添加进Android应用程序 libs文件夹
(2)通过import com.loopj.android.http.*;引入相关类
(3)创建异步请求
=========
source:
http://blog.csdn.net/ryantang03/article/details/8824081
官方推荐的使用方法,使用一个静态的请求对象,我们来看看官方例举的一个访问Twitter的API的例子:
=================
source:http://www.cnblogs.com/xiaoweiz/p/3916790.html
http://blog.csdn.net/hil2000/article/details/13949513
1.简介
Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-async-http这个库可以大大的简化操作,它是基于Apache’s HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message 机制传递信息。
2.特性
(1)采用异步http请求,并通过匿名内部类处理回调结果
(2)http请求独立在UI主线程之外
(3)采用线程池来处理并发请求
(4)采用RequestParams类创建GET/POST参数
(5)不需要第三方包即可支持Multipart file文件上传
(6)大小只有25kb
(7)自动为各种移动电话处理连接断开时请求重连
(8)超快的自动gzip响应解码支持
(9)使用BinaryHttpResponseHandler类下载二进制文件(如图片)
(10) 使用JsonHttpResponseHandler类可以自动将响应结果解析为json格式
(11)持久化cookie存储,可以将cookie保存到你的应用程序的SharedPreferences中
3.使用方法
(1)到官网http://loopj.com/android-async-http/下载最新的android-async-http-1.4.4.jar,然后将此jar包添加进Android应用程序 libs文件夹
(2)通过import com.loopj.android.http.*;引入相关类
(3)创建异步请求
- AsyncHttpClient client = new AsyncHttpClient();
- client.get("http://www.google.com", new AsyncHttpResponseHandler() {
- @Override
- public void onSuccess(String response) {
- System.out.println(response);
- }
- });
=========
source:
http://blog.csdn.net/ryantang03/article/details/8824081
在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Instagram和Pinterest的Android版就是用的这个网络请求库。这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通过回调方法处理请求结果。
其主要特征如下:
- 处理异步Http请求,并通过匿名内部类处理回调结果
- Http请求均位于非UI线程,不会阻塞UI操作
- 通过线程池处理并发请求
- 处理文件上传、下载
- 响应结果自动打包JSON格式
- 自动处理连接断开时请求重连
使用android-async-http也非常简单,到官网http://loopj.com/android-async-http/下载依赖jar包,导入工程中libs文件夹下并添加到工程路径即可。通过下面的代码来创建一个异步请求:
- AsyncHttpClient client = new AsyncHttpClient();
- client.get("http://www.baidu.com", new AsyncHttpResponseHandler() {
- @Override
- public void onSuccess(String response) {
- System.out.println(response);
- textView.setText(response);
- }
- @Override
- public void onStart() {
- super.onStart();
- System.out.println("onStart");
- }
- @Override
- public void onFinish() {
- super.onFinish();
- System.out.println("onFinish");
- }
- }
通过Get请求指定的URL并通过回调函数处理请求结果,同时,请求方式还支持POST和PUT,请求的同时还支持参数传递,下面看看如何通过JSON字符串作为参数访问服务器:
- try {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("username", "ryantang");
- StringEntity stringEntity = new StringEntity(jsonObject.toString());
- client.post(MainActivity.this, "http://api.com/login", stringEntity, "application/json", new JsonHttpResponseHandler(){
- @Override
- public void onSuccess(JSONObject jsonObject) {
- super.onSuccess(jsonObject);
- }
- });
- } catch (JSONException e) {
- e.printStackTrace();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
官方推荐的使用方法,使用一个静态的请求对象,我们来看看官方例举的一个访问Twitter的API的例子:
使用方法:
由于涉及网络请求,最后别忘了添加权限:
=================
source:http://www.cnblogs.com/xiaoweiz/p/3916790.html
在Android开发中,发送、处理http请求简直太常见了,以至于我们的代码里到处充斥着各种HttpClient和与之相关又臭又长的代码,
它们存在于你代码的各个角落,每次看见都令人作呕,而你仅仅是为了server能返回一个string或者json给你。每次当我自己写这样
的代码时,我都会想能不能简化下这个流程,可能2、3行代码就能搞定。因为针对最简单的case,我只需要提供request url,成功时的
callback和(或)失败时的callback,仅此而已。针对这一类问题(需求),可以说android-async-http提供了几乎完美的解决方案。
通过使用它可以大大简化你的代码,不仅如此,你的代码看上去也优雅多了。
当我第一眼看到它时就被吸引住了,特别是async关键字,干我们这行的都知道,这是异步执行,也就是说它的网络请求自动在非UI
线程里执行,你不需要任何额外的操作(比如手动new一个Thread之类)。项目的官方网站:
我这里简要介绍下:它是专门针对Android在Apache的HttpClient基础上构建的异步的callback-based http client。所有的请求
全在UI线程之外发生,而callback发生在创建它的线程中,应用了Android的Handler发送消息机制。你也可以把AsyncHttpClient应用在
Service中或者后台线程中,库代码会自动识别出它所运行的context。它的feature包括:
1. 发送异步http请求,在匿名callback对象中处理response;
2. http请求发生在UI线程之外;
3. 内部采用线程池来处理并发请求;
4. GET/POST 参数构造,通过RequestParams类。
5. 内置多部分文件上传,不需要第三方库支持;
6. 流式Json上传,不需要额外的库;
7. 能处理环行和相对重定向;
8. 和你的app大小相比来说,库的size很小,所有的一切只有90kb;
9. 自动智能的请求重试机制在各种各样的移动连接环境中;
10. 自动的gzip响应解码;
11. 内置多种形式的响应解析,有原生的字节流,string,json对象,甚至可以将response写到文件中;
12. 永久的cookie保存,内部实现用的是Android的SharedPreferences;
13. 通过
BaseJsonHttpResponseHandler和各种json库集成;
14. 支持SAX解析器;
15. 支持各种语言和content编码,不仅仅是UTF-8。
大概翻译了下,这些只是大体的概览,具体的细节还得在使用过程中慢慢感受、学习。
接下来,带领大家看看应用android-async-http来写代码是个啥样子。简单来说你只需要3步,
1. 创建一个AsyncHttpClient;
2. (可选的)通过RequestParams对象设置请求参数;
3. 调用AsyncHttpClient的某个get方法,传递你需要的(成功和失败时)callback接口实现,一般都是匿名内部类
,实现了AsyncHttpResponseHandler,类库自己也提供了好些现成的response handler,你一般不需要自己创建一个。
訂閱:
意見 (Atom)