感謝小二同學將遇到的問題分享給我們,再此給以掌聲。如果看不懂下面文章的建議查詢一下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 心與心的互動)
有乙個生性吝嗇的富翁,總覺得生活缺少了點什麼,於是專程區請教禪師說 我有那麼多錢,要什麼有什麼,為什麼還是覺得不快樂呢?禪師請他站在窗子前面,問他看到了什麼?富翁回答 我看到了路上匆忙來往的人群。禪師又請他站到鏡子前面,再問他看到了什麼?富翁不解地回答說 看到我自己。禪師說 窗子是玻璃的,鏡子也是玻...