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 \"?>" "<soap 1 2 : Envelope
" "xmlns:xsi=\"http: //www.w3.org/2001/XMLSchema-instance\"
" "xmlns:xsd=\"http: //www.w3.org/2001/XMLSchema\"
" "xmlns:soap 1 2 =\"http: //www.w3.org/2003/05/soap-envelope\">" "<soap 1 2 :Body>" "<getUserCheck>" "<strUserName>%@</strUserName>" "<strPassWord>%@</strPassWord>" "<strMacAddress>%@</strMacAddress>" "</getUserCheck>" "</soap 1 2 :Body>" "</soap 1 2 :Envelope>",
number,paw, @"" ]; //
將這個XML字符串打印出來 NSLog( @"%@" ,
soapMsg); //
創建URL,內容是前面的請求報文報文中第二行主機地址加上第一行URL字段 //
根據上面的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 :NSUTF 8 StringEncoding]]; //
創建連接 conn
= [[ NSURLConnection
alloc ]
initWithRequest :req
delegate : self ]; if
(conn) { webData
= [ NSMutableData
data ]; } } |
-
123456789101112131415
// 完成接收數據時調用
-(
void
)
connectionDidFinishLoading
:(
NSURLConnection
*) connection {
NSString
*theXML = [[
NSString
alloc
]
initWithBytes
:[webData
mutableBytes
]
length
:[webData
length
]
encoding
:NSUTF
8
StringEncoding];
// 打印出得到的XML
NSLog(
@"=======%@"
, theXML);
// 使用NSXMLParser解析出我們想要的結果
xmlParser = [[
NSXMLParser
alloc
]
initWithData
:
webData
];
[xmlParser
setDelegate
:
self
];
[xmlParser
setShouldResolveExternalEntities
:
YES
];
[xmlParser
parse
];
}