Soap

soap

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
- (IBAction)doQuery:(id)sender {
    NSString *number = phoneNumber.text;
    NSString*paw = phonepaw.text;
    // 設置我們之後解析XML時用的關鍵字,與響應報文中Body標籤之間的getMobileCodeInfoResult標籤對應
    matchingElement = @"getUserCheck";
    // 創建SOAP消息,內容格式就是網站上提示的請求報文的主體實體部分
    NSString *soapMsg = [NSString stringWithFormat:
                         @"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
                         "<soap12:Envelope "
                         "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
                         "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "
                         "xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">"
                         "<soap12:Body>"
                         "<getUserCheck>"
                         "<strUserName>%@</strUserName>"
                         "<strPassWord>%@</strPassWord>"
                         "<strMacAddress>%@</strMacAddress>"
                         "</getUserCheck>"
                         "</soap12:Body>"
                         "</soap12:Envelope>", number,paw, @""];
     
    // 將這個XML字符串打印出來
    NSLog(@"%@", soapMsg);
    // 創建URL,內容是前面的請求報文報文中第二行主機地址加上第一行URL字段
    NSURL *url = [NSURL URLWithString: @"http://xxx.xxx.xxx.xxx:8001/WellService.asmx"];
    // 根據上面的URL創建一個請求
    NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
    NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMsg length]];
    // 添加請求的詳細信息,與請求報文前半部分的各字段對應
    [req addValue:@"application/soap+xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [req addValue:msgLength forHTTPHeaderField:@"Content-Length"];
    // 設置請求行方法爲POST,與請求報文第一行對應
    [req setHTTPMethod:@"POST"];
    // 將SOAP消息加到請求中
    [req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]];
    // 創建連接
    conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
    if (conn) {
        webData = [NSMutableData data];
    }
}

  • ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // 完成接收數據時調用
    -(void) connectionDidFinishLoading:(NSURLConnection *) connection {
        NSString *theXML = [[NSString alloc] initWithBytes:[webData mutableBytes]
                                                    length:[webData length]
                                                  encoding:NSUTF8StringEncoding];
         
        // 打印出得到的XML
        NSLog(@"=======%@", theXML);
        // 使用NSXMLParser解析出我們想要的結果
        xmlParser = [[NSXMLParser alloc] initWithData: webData];
        [xmlParser setDelegate: self];
        [xmlParser setShouldResolveExternalEntities: YES];
        [xmlParser parse];
         
    }
發佈了61 篇原創文章 · 獲贊 5 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章