Android調(diào)用Web服務(wù)

現(xiàn)在大部分應(yīng)用程序都把業(yè)務(wù)邏輯處理,數(shù)據(jù)調(diào)用等功能封裝成了服務(wù)的形式,應(yīng)用程序只需要調(diào)用這些web服務(wù)就好了,在這里就不贅述web服務(wù)的優(yōu)點(diǎn)了。本文總結(jié)如何在android中調(diào)用Web服務(wù),通過(guò)傳遞基類型和復(fù)雜類型對(duì)比調(diào)用.NET平臺(tái)發(fā)布的WCF服務(wù)和WebService服務(wù)之間的區(qū)別。

0 寫(xiě)在前面

以前都是在.NET平臺(tái)上conding,使用.NET平臺(tái)發(fā)布服務(wù),然后再在.NET的客戶端進(jìn)行調(diào)用,非常的方便,最簡(jiǎn)單的方式就是添加web服務(wù)引用,通過(guò)添加web服務(wù)引用實(shí)現(xiàn)像本地調(diào)用那樣調(diào)用web服務(wù),當(dāng)然我們也可以采用http-post、http-get和基于soap協(xié)議的方式去調(diào)用服務(wù)。

最近在弄andriod的程序,需要調(diào)用web服務(wù)器上的數(shù)據(jù),服務(wù)采用C#寫(xiě)的,并部署在iis服務(wù)器上。我們可以像.NET那樣調(diào)用服務(wù)那,利用andriod庫(kù)自帶的HttpPost和HttpGet類來(lái)調(diào)用Web服務(wù)。但是wcf服務(wù)發(fā)布的一些沒(méi)有添加WebGet或者WebInvoke特性的服務(wù),都只提供基于Soap協(xié)議的服務(wù)調(diào)用方式。雖然soap協(xié)議也是基于Http協(xié)議,也可以使用HttpPost類來(lái)進(jìn)行調(diào)用,但拼湊soap結(jié)構(gòu)體是比較麻煩,好在Ksoap2包提供了調(diào)用web服務(wù)的方法,而且還比較好的兼容了.NET平臺(tái)發(fā)布的服務(wù)。因此本文總結(jié)在Andriod中如何使用Ksoap2來(lái)調(diào)用.NET平臺(tái)的服務(wù),通過(guò)傳遞基類型和復(fù)雜類型對(duì)比調(diào)用.NET服務(wù)發(fā)布的WCF服務(wù)和WebService服務(wù)之間的區(qū)別。本文的末尾提供Ksoap2包的下載。

1 WCF服務(wù)

我們?cè)诜?wù)中提供兩個(gè)方法,一個(gè)計(jì)算整數(shù)加法,另一個(gè)接受People對(duì)象并且返回People信息(string)。

1.1 People的數(shù)據(jù)契約

[DataContract] public class People {
  [DataMember] public int Age;
  [DataMember] public string Name;
}

2.2 WCF服務(wù)契約

[ServiceContract(Name = "JuameService