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
];
}