HTTP 協(xié)議
HTTP 協(xié)議的主要特點(diǎn)如下:
支持 C/S( 客戶端 / 服務(wù)器) 模式
? 簡單快速宗收。 客戶向服務(wù)器請求服務(wù)時(shí)混稽, 只需傳送請求方法和路徑审胚。
? 靈活。
無連接颓影。
無狀態(tài)懒鉴。
HTTP 的 URL
http:// host[":"port][abs_path]
http 表示要通過 HTTP 協(xié)議來定位網(wǎng)絡(luò)資源的 碎浇; host 表示合法的 Internet 主機(jī)域名或者 IP 地址 奴璃; port 指定一個(gè)端口號城豁, 為空則使用默認(rèn)端口 80 ; abs_path 指定請求資源的 URI( Uniform Resource Identifier雳旅, 通用資源標(biāo)志符间聊, 指 Web 上任意的可用資源)。
HTTP 報(bào)文是面向文本的型豁, 報(bào)文中的每一個(gè)字段都是一些 ASCII 碼串尚蝌, 各個(gè)字段的長度是不確定的。
HTTP 有兩類報(bào)文: 請求報(bào)文和響應(yīng)報(bào)文衣形。
HTTP 請求報(bào)文
一個(gè) HTTP 請求報(bào)文由請求行姿鸿、 請求報(bào)頭、 空行和請求數(shù)據(jù) 4 個(gè)部分組成
( 1)請求行由請求方法字段纪铺、 URI 字段和 HTTP 協(xié)議版本字段組成碟渺, 它們之間用空格分隔。
格式如下:
Method Request-URI HTTP-Version CRLF
例如: GET /form.html HTTP/1.1 (CRLF)
其中 Method 表示請求方法芜繁; Request-URI 是一個(gè)統(tǒng)一資源標(biāo)識(shí)符骏令; HTTP-Version 表示請求的 HTTP 協(xié)議版本垄提; CRLF 表示回車和換行( 除了作為結(jié)尾的 CRLF 外周拐, 不允許出現(xiàn)單獨(dú)的 CR 或 LF 字符)凰兑。
( 3)空行
最后一個(gè)請求頭之后是一個(gè)空行, 發(fā)送回車符和換行符勾给, 通知服務(wù)器以下不再有請求頭锅知。
( 4) 請求數(shù)據(jù)
請求數(shù)據(jù)不在 GET 方法中使用, 而是在 POST 方法中使用旅择。
HTTP 響應(yīng)報(bào)文
HTTP 響應(yīng)報(bào)文也是由 4 個(gè)部分組成的侣姆, 分別是 : 狀態(tài)行捺宗、 消息報(bào)頭川蒙、 空行、 響應(yīng)正文
( 1) 狀態(tài)行
狀態(tài)行的格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
例如: HTTP/1.1 200 OK (CRLF)
其中昼牛, HTTP-Version 表示服務(wù)器 HTTP 協(xié)議的版本 康聂; Status-Code 表示服務(wù)器發(fā)回的響應(yīng)狀態(tài)代碼; Reason-Phrase 表示狀態(tài)代碼的文本描述伶椿。
( 3) 空行
這行是空的脊另。
( 4) 響應(yīng)正文
響應(yīng)正文就是服務(wù)器返回的資源的內(nèi)容
JSON
指的是javaScript對象表示法,輕量級的文本數(shù)據(jù)交換格式
描述數(shù)據(jù)結(jié)構(gòu)有兩種形式
名稱/值 name:value
值的有序列表 name:[value,value]
json數(shù)據(jù)解析
(1){"name":"Lili"}
JSONObject demonJson = new JSONObject(jsonString)
String s = demoJson.getString("name");
(2){"number":[1,2,3]}
JSONObject demonJson = new JSONObject(jsonString);
JSONArray numberList = demonJson.getJSONArray("number");
SOAP
簡單對象訪問協(xié)議,基于XML標(biāo)準(zhǔn),主要用于web服務(wù),使網(wǎng)頁服務(wù)器從XML數(shù)據(jù)庫中提取數(shù)據(jù)時(shí),無需格式化頁面
SMTP,HTTP,HTTPS可以傳輸SOAP消息,一個(gè)普通的XML文檔
使用流程
1.導(dǎo)入ksoap2包
2.指定WebService的命名空間和調(diào)用方法名
SoapObject request = new SoapObject(http://service,"getName");
3.設(shè)置調(diào)用方法的參數(shù)值
Request.addProperty("param1","value");
4.生成調(diào)用WebService方法的SOAP請求信息
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VERl1);
Envelope.bodyOut = request;
5.創(chuàng)建HttpTransportSE對象
HttpTransportSE ht = new HttpTransportSE("http://fy.webxml.com.xxxx");
6.使用call方法調(diào)用webService方法
ht.call(null,envelope);
7.使用getResponse方法獲得WebService的返回結(jié)果
SoapObject soapObject = (SoapObject)envelope.getResponse();
8.解析結(jié)果
HTML
android平臺(tái)上推薦使用Jsoup解析器解析HTML文檔