最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android中soap協(xié)議使用(ksoap調(diào)用webservice)

 更新時(shí)間:2014年02月20日 16:43:46   作者:  
kSOAP是如何調(diào)用ebservice的呢,首先要使用SoapObject,這是一個(gè)高度抽象化的類,完成SOAP調(diào)用??梢哉{(diào)用它的addProperty方法填寫(xiě)要調(diào)用的webservice方法的參數(shù)

如下面代碼所示:

復(fù)制代碼 代碼如下:

SoapObject request  = new SoapObject(serviceNamespace, methodName);

SoapObject構(gòu)造函數(shù)的兩個(gè)參數(shù)含義為:
serviceNamespace – 你的webservice的命名空間,既可以是
http://localhost:8088/flickrBuddy/services/Buddycast這樣的,也可以是 urn:PI/DevCentral/SoapService這樣的;
methodName – 你要調(diào)用方法的名字。
然后,按照webservice方法參數(shù)的順序,依次調(diào)用

復(fù)制代碼 代碼如下:

request.addProperty( "username", "user" );
request.addProperty( "password", "pass" );

來(lái)填充webservice參數(shù)。

注意:

建議webservice的方法傳遞的參數(shù)盡量用string類型。即使是int類型,kSOAP2與Java編寫(xiě)的webservice也有可能交互發(fā)生異常。
對(duì)于webservice方法返回String類型的情況,還用不著開(kāi)發(fā)者做序列化(Serialization)定制工作。

要點(diǎn):
kSOAP 1.X/2.0可以自動(dòng)把四種SOAP類型映射為Java類型

復(fù)制代碼 代碼如下:

SOAP                type Java type
xsd:int               java.lang.Integer
xsd:long            java.lang.Long
xsd:string          java.lang.String
xsd:boolean     java.lang.Boolean

除此之外,都需要開(kāi)發(fā)者自己做類型映射。
然后要告訴SoapSerializationEnvelope把構(gòu)造好的SoapObject封裝進(jìn)去:

復(fù)制代碼 代碼如下:

SoapSerializationEnvelope envelope =
new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = request;

要點(diǎn):

你可以通過(guò)SoapSerializationEnvelope或者SoapEnvelope的構(gòu)造函數(shù)來(lái)指明你要用SOAP的哪一個(gè)規(guī)范,可以是以下幾種之一:
常量SoapEnvelope.VER10:對(duì)應(yīng)于SOAP 1.0規(guī)范
常量SoapEnvelope.VER11:對(duì)應(yīng)于SOAP 1.1規(guī)范
常量SoapEnvelope.VER12:對(duì)應(yīng)于SOAP 1.2規(guī)范
這樣,無(wú)論要調(diào)用的webservice采用了哪一個(gè)SOAP規(guī)范,你都可以輕松應(yīng)對(duì)。
接下來(lái)就要聲明

復(fù)制代碼 代碼如下:

HttpTransport tx = new HttpTransport(serviceURL);
ht.debug = true;

HttpTransport構(gòu)造函數(shù)的參數(shù)含義為:
serviceURL – 要投遞SOAP數(shù)據(jù)的目標(biāo)地址,譬如說(shuō)
http://soap.amazon.com/onca/soap3 。
HttpTransport是一個(gè)強(qiáng)大的輔助類,來(lái)完成Http-call transport process,它封裝了網(wǎng)絡(luò)請(qǐng)求的一切,你完全不用考慮序列化消息。我們通過(guò)設(shè)置它的debug屬性為true來(lái)打開(kāi)調(diào)試信息。
方法HttpTransport.call()自己就能夠發(fā)送請(qǐng)求給服務(wù)器、接收服務(wù)器響應(yīng)并序列化SOAP消息,如下所示:

復(fù)制代碼 代碼如下:

ht.call(null, envelope);

HttpTransport的call方法的兩個(gè)參數(shù)含義為:
soapAction – SOAP 規(guī)范定義了一個(gè)名為 SOAPAction 的新 HTTP 標(biāo)頭,所有 SOAP HTTP 請(qǐng)求(即使是空的)都必須包含該標(biāo)頭。 SOAPAction 標(biāo)頭旨在表明該消息的意圖。通??梢灾么藚?shù)為null,這樣HttpTransport就會(huì)設(shè)置HTTP標(biāo)頭SOAPAction為空字符串。
Envelope – 就是前面我們構(gòu)造好的SoapSerializationEnvelope或SoapEnvelope對(duì)象。

注意:
對(duì)于HttpTransport的處理上,kSOAP2和kSOAP1.2的寫(xiě)法不一樣。
對(duì)于kSOAP 1.2,HttpTransport的構(gòu)造函數(shù)是HttpTransport (String url, String soapAction),第二個(gè)參數(shù)soapAction可以是要調(diào)用的webservice方法名。
而kSOAP 2,構(gòu)造函數(shù)是 HttpTransport(String url)。kSOAP2相當(dāng)于把webservice方法名分離出去,完全交給SoapObject去封裝,而HttpTransport僅僅負(fù)責(zé)把 SoapEnvelope發(fā)送出去并接收響應(yīng),這樣更合理一些。
調(diào)用call方法是一個(gè)同步過(guò)程,需要等待它返回。

返回之后,就可以調(diào)用SoapSerializationEnvelope的getResult方法來(lái)獲取結(jié)果了:

復(fù)制代碼 代碼如下:

Object Response = envelope.getResult();

如果HttpTransport的debug屬性為true,那么此時(shí)就可以通過(guò)

復(fù)制代碼 代碼如下:

System.out.println("Response dump>>" + tx.responseDump);

打印出HttpTransport的調(diào)試信息。尤其當(dāng)前面call方法和getResult方法發(fā)生異常時(shí),這個(gè)調(diào)試信息是非常有用的。
前面我們的webservice方法由于是返回string,所以得到這個(gè)string值就非常簡(jiǎn)單了:

復(fù)制代碼 代碼如下:

String sResponse = (String)Response;

注意:
由于HttpTransport類實(shí)際上是調(diào)用了HttpConnection作網(wǎng)絡(luò)連接,所以必須另起一個(gè)線程來(lái)專門(mén)做kSOAP工作,否則會(huì)堵塞操作。

相關(guān)文章

  • Android實(shí)現(xiàn)百度地圖兩點(diǎn)畫(huà)弧線

    Android實(shí)現(xiàn)百度地圖兩點(diǎn)畫(huà)弧線

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)百度地圖兩點(diǎn)畫(huà)弧線,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 使用Android原生WebView+Highcharts實(shí)現(xiàn)可左右滑動(dòng)的折線圖

    使用Android原生WebView+Highcharts實(shí)現(xiàn)可左右滑動(dòng)的折線圖

    折線圖是Android開(kāi)發(fā)中經(jīng)常會(huì)碰到的效果,但由于涉及自定義View的知識(shí),對(duì)許多剛?cè)腴T(mén)的小白來(lái)說(shuō)會(huì)覺(jué)得很高深,下面這篇文章主要給大家介紹了關(guān)于如何使用Android原生WebView+Highcharts實(shí)現(xiàn)可左右滑動(dòng)的折線圖的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Android瀑布流照片墻實(shí)現(xiàn) 體驗(yàn)不規(guī)則排列的美感

    Android瀑布流照片墻實(shí)現(xiàn) 體驗(yàn)不規(guī)則排列的美感

    這篇文章主要為大家詳細(xì)介紹了Android瀑布流照片墻實(shí)現(xiàn),體驗(yàn)不規(guī)則排列的美感,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Android webview 內(nèi)存泄露的解決方法

    Android webview 內(nèi)存泄露的解決方法

    這篇文章主要介紹了Android webview 內(nèi)存泄露的解決方法的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Android開(kāi)發(fā)登陸案例

    Android開(kāi)發(fā)登陸案例

    這篇文章主要介紹了Android開(kāi)發(fā)登陸案例的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • android ListView和GridView拖拽移位實(shí)現(xiàn)代碼

    android ListView和GridView拖拽移位實(shí)現(xiàn)代碼

    有些朋友對(duì)android中ListView和GridView拖拽移位功能的實(shí)現(xiàn)不是很了解,接下來(lái)將詳細(xì)介紹,需要了解的朋友可以參考下
    2012-12-12
  • 揭秘Android視圖繪制的流程步驟

    揭秘Android視圖繪制的流程步驟

    在Android的UI中,View是至關(guān)重要的一個(gè)組件,它是用戶界面的基本構(gòu)建塊,在View的繪制過(guò)程中,涉及到很多重要的概念和技術(shù),本文將詳細(xì)介紹Android?View的繪制過(guò)程,讓你能夠更好地理解和掌握Android的UI開(kāi)發(fā),需要的朋友可以參考下
    2023-06-06
  • Android音頻系統(tǒng)AudioTrack使用方法詳解

    Android音頻系統(tǒng)AudioTrack使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Android音頻系統(tǒng)AudioTrack的使用方法,如何使用AudioTrack進(jìn)行音頻播放,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android自定義View實(shí)現(xiàn)音頻播放圓形進(jìn)度條

    Android自定義View實(shí)現(xiàn)音頻播放圓形進(jìn)度條

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)音頻播放圓形進(jìn)度條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • React Native與Android 原生通信的方法

    React Native與Android 原生通信的方法

    本篇文章主要介紹了React Native與Android 原生通信的方法,主要是分享原生模塊與JS傳遞數(shù)據(jù)的幾種方式,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-05-05

最新評(píng)論

盐边县| 澄江县| 探索| 游戏| 瑞安市| 兴业县| 青神县| 札达县| 岳普湖县| 邳州市| 静安区| 开鲁县| 二连浩特市| 南靖县| 铁岭市| 阳春市| 佳木斯市| 庆安县| 隆昌县| 仙居县| 门源| 田林县| 土默特右旗| 纳雍县| 讷河市| 镇巴县| 定兴县| 巴东县| 富源县| 松桃| 遂昌县| 长宁县| 长阳| 尤溪县| 台东市| 瑞昌市| 大渡口区| 墨玉县| 西吉县| 鸡东县| 乾安县|