使用SOAP訪問Web服務

2021-06-27 12:17:24 字數 2695 閱讀 4753

在ios中使用soap,需要我們自己組裝xml格式的字串,當xml字串比較長的時候會變得很麻煩。另外,我們在寫xml格式的字串時也要經常使用轉義字元「\」。

看看剛才那個網頁的內容,注意到soap 1.2標籤下的內容:

上面的這段文字就是使用soap 1.2的請求報文格式,就是乙個http請求報文,注意空行上面的那些內容中的請求行與各首部行的每個欄位名,在下面的示例中會用到。這個http請求報文的實體主體部分是xml格式的一段文字,注意body標籤之間的內容。

伺服器的響應報文格式如下:

我們要用到的只有getmobilecodeinforesult這個標籤。

在文字輸入框的attribute inspector中設定其keyboard屬性為number pad。

3、之後向viewcontroller.h中,為文字輸入框建立outlet對映,名稱為:phonenumber;為「查詢」按鈕建立action對映,事件型別為touch up inside,名稱為:doquery。建立對映的方法就是開啟assistant editor,選中某一控制項,按住ctrl,拖向viewcontroller.h,可以參考前面的文章。

4、在viewcontroller.h中新增**:

@property (strong, nonatomic) nsmutabledata *webdata;

@property (strong, nonatomic) nsmutablestring *soapresults;

@property (strong, nonatomic) nsxmlparser *xmlparser;

@property (nonatomic) bool elementfound;

@property (strong, nonatomic) nsstring *matchingelement;

@property (strong, nonatomic) nsurlconnection *conn;

// 開始查詢

- (ibaction)doquery:(id)sender

}5.3 在@end之前新增**

#pragma mark -

#pragma mark url connection data delegate methods

// 剛開始接受響應時呼叫

-(void) connection:(nsurlconnection *)connection didreceiveresponse:(nsurlresponse *) response

// 每接收到一部分資料就追加到webdata中

-(void) connection:(nsurlconnection *)connection didreceivedata:(nsdata *) data

// 出現錯誤時

-(void) connection:(nsurlconnection *)connection didfailwitherror:(nserror *) error

// 完成接收資料時呼叫

-(void) connectiondidfinishloading:(nsurlconnection *) connection

在@end之前新增**

#pragma mark -

#pragma mark xml parser delegate methods

// 開始解析乙個元素名

-(void) parser:(nsxmlparser *) parser didstartelement:(nsstring *) elementname namespaceuri:(nsstring *) namespaceuri qualifiedname:(nsstring *) qname attributes:(nsdictionary *) attributedict

elementfound = yes;

}}// 追加找到的元素值,乙個元素值可能要分幾次追加

-(void)parser:(nsxmlparser *) parser foundcharacters:(nsstring *)string

}// 結束解析這個元素名

-(void)parser:(nsxmlparser *)parser didendelement:(nsstring *)elementname namespaceuri:(nsstring *)namespaceuri qualifiedname:(nsstring *)qname

}// 解析整個檔案結束後

- (void)parserdidenddocument:(nsxmlparser *)parser

}// 出錯時,例如強制結束解析

- (void) parser:(nsxmlparser *)parser parseerroroccurred:(nserror *)parseerror

}

使用 HttpLib 來訪問 Web 服務

c 為開發者提供很多便利方法用來訪問各種 web 服務,但是編寫非同步的訪問方式卻是有點複雜。windows 通訊框架是乙個客戶端 伺服器通訊非常棒的工具。我精彩發現我自己必須寫很多 來使用已有的 api。微軟提供的這些 api 對一些基本的使用來說都是過於複雜。而 httplib 大大的簡化了在 ...

使用Web服務

上面討論了如何建立 web服務,接下來就討論如何使用它們。為此需要在 中生成乙個知道如何與給定 web服務進行通訊的 類。這樣,中對 web服務進行的任何呼叫都要通過這個 類,從表面看,這個 類就等同於 web服務,也會認為我們有了 web服務的本地副本。而實際的情況是有許多 通訊工作在進行,只是我...

簡單物件訪問協議 SOAP 介紹

簡單物件訪問協議 soap 介紹 第乙個四行是標準的http post是http的動詞,所有的http訊息都需要主機。content type和content length部分是所有包含 payload 的http訊息所需要的。content type text xml 表示payload是乙個傳送...