基於SOAP的xml網路互動心得

2021-09-09 04:12:43 字數 2761 閱讀 7124

感謝小二同學將遇到的問題分享給我們,再此給以掌聲。如果看不懂下面文章的建議查詢一下http協議的文藝,對http協議要有個概念。

xml網路互動心得目錄

一、     xml解析

1、根路徑下

2、some路徑下

二、     xml soap請求

一、     xml解析(例:如下圖xml返回值)

1、根路徑下

例:.m檔案中

#import」 gdataxmlnode」

nsstring *soapmsg = [nsstringstringwithformat:

@"<?xmlversion=\"1.0\" encoding=\"utf-8\"?>\n"//通用

"\n"//通用

"\n"//通用

"\n"//注釋1

"%@\n"

"%@\n"

"%@\n"//注釋2

"\n"

"\n"

"\n"

,@"a106",@"a10602",[nsstringstringwithformat:@"<?xml version=\"1.0\"encoding=\"utf-8\"?>%@

%@%@

",@"13811110001",@"123456",@"94d1a83e961f4fbf86b2291c502f1a11"]];

//判斷是否成功

if (doc)

}

2、some路徑下

例:.m檔案中

#import」 gdataxmlnode」

nsdata *xmldata = [[nsdata alloc]initwithcontentsoffile:str];//同上

gdataxmldocument *doc = [[gdataxmldocument alloc] initwithdata:xmldataoptions:0 error:nil]; //同上

if (doc)

}}

二、     xml soap請求

webservice的伺服器是不能接收瀏覽器gei方法或者直接setvalue的,他需要拼出符合xml規則的soap字串

直接**舉例 /

/注釋3

nslog(@"%@", soapmsg); //越打越放心

// 建立url,內容是前面的請求報文報文中第二行主機位址加上第一行url欄位

nsurl *url = [nsurl urlwithstring: @""];//注釋4

// 根據上面的url建立乙個請求

nsmutableurlrequest *req = [nsmutableurlrequest requestwithurl:url];//通用

nsstring *msglength = [nsstring stringwithformat:@"%d",[soapmsg length]];//通用

// 新增請求的詳細資訊,與請求報文前半部分的各欄位對應

[req addvalue:@"text+xml; charset=utf-8"forhttpheaderfield:@"content-type"];//通用

[req addvalue:msglength forhttpheaderfield:@"content-length"];//通用

[req addvalue: @" somethingtodo "forhttpheaderfield:@"soapaction"]; //注釋5

// 設定請求行方法為post,與請求報文第一行對應

[req sethttpmethod:@"post"];//通用

// 將soap訊息加到請求中

[req sethttpbody: [soapmsg datausingencoding:nsutf8stringencoding]]; //通用

// 建立連線

nsurlresponse *reponse; //通用

nserror *error = nil; //通用

nsdata *responsedata = [nsurlconnection sendsynchronousrequest:reqreturningresponse:&reponse error:&error]; //返回值

if(responsedata)

注釋1:\n"這裡的somethingtodo是webservice的方法名,我們會通過這個方法訪問伺服器,不然訪問不到;是這個方法的命名空間,注意這個不是伺服器的url(重要)

注釋2:這三行是注釋1中方法的引數,前兩個是普通str,第三個是xml的str(見注釋3)

注釋3:普通str可以直接%@加入,xml的str需要注意裡面的」(需要用\轉義)和<(寫為<)、>(寫為》)尤其是<、>不按照括號裡的寫法的話,伺服器是不認的

注釋4:nsurl *url = [nsurl urlwithstring: @""];這個才是我們訪問的url,要和注釋1的命名空間區分

注釋5:[req addvalue: @" somethingtodo "forhttpheaderfield:@"soapaction"];很重要,這裡新增我們的訪問方法,這裡的和somethingtodo都要與注釋1的對應好~

到此為止,感謝大家對我的幫助,希望也能幫到大家。

qq群號:241465868

使用SOAP的XML訊息傳遞

使用soap的xml訊息傳遞的簡易流程圖 詳細步驟如下 1 服務請求者的應用程式建立一條 soap 訊息,將此資訊和服務提供者的 一起提供給 soap 基礎結構 例如乙個 soap 客戶機執行時 soap 客戶機執行時與乙個底層網路協議 例如 互動,然後在網路上將 soap 訊息傳送出去。2 網路基...

2 基於soap訊息的呼叫

上一節講述了webservice的發布,本節說明一下基於soap訊息的呼叫實現細節,按順序先後 1 建立要訪問的ws服務物件 url endpointurl new url http localhost 8889 ms?wsdl 訪問的url qname的第一引數是targetnamespace,第...

鏡子與窗子(摘自Chamate 心與心的互動)

有乙個生性吝嗇的富翁,總覺得生活缺少了點什麼,於是專程區請教禪師說 我有那麼多錢,要什麼有什麼,為什麼還是覺得不快樂呢?禪師請他站在窗子前面,問他看到了什麼?富翁回答 我看到了路上匆忙來往的人群。禪師又請他站到鏡子前面,再問他看到了什麼?富翁不解地回答說 看到我自己。禪師說 窗子是玻璃的,鏡子也是玻...