您的位置:首页 > 移动开发 > IOS开发

SOAP Webservice用AFNetworking实现请求

2015-04-10 20:11 274 查看
NSString *soapMessage = [NSString stringWithFormat:
@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
"<soap:Body>\n"
"<Check2dCode xmlns=\"http://115.28.40.11:8888/webservices/\">\n"
"<userID>%@</userID>\n"
"<deviceInfo>%@</deviceInfo>\n"
"<barcode>%@</barcode>\n"
"<totalMoney>%@</totalMoney>\n"
"</Check2dCode>\n"
"</soap:Body>\n"
"</soap:Envelope>\n", self.userid, self.deviceInfo, self.barcode, self.totalMoney
];

//请求发送到的路径
NSURL *url = [[NSURL alloc] initWithString:@"http://115.28.40.11:8888/webservices/AndroidAndIos.asmx"];
NSString *soapActionURL = @"http://115.28.40.11:8888/webservices/Check2dCode";

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [[AFHTTPResponseSerializer alloc] init];
NSString *msgLength = [NSString stringWithFormat:@"%lu", (unsigned long)[soapMessage length]];
[manager.requestSerializer setValue:msgLength forHTTPHeaderField:@"Content-Length"];
[manager.requestSerializer setValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[manager.requestSerializer setValue:[url host] forHTTPHeaderField:@"Host"];
[manager.requestSerializer setValue:[NSString stringWithFormat:@"%@",soapActionURL] forHTTPHeaderField:@"SOAPAction"];

[manager.requestSerializer setQueryStringSerializationWithBlock:^NSString *(NSURLRequest *request, NSDictionary *parameters, NSError *__autoreleasing *error) {
return soapMessage;
}];
[manager POST:@"http://115.28.40.11:8888/webservices/AndroidAndIos.asmx" parameters:soapMessage success:^(AFHTTPRequestOperation *operation, id responseObject) {

NSString *response = [[NSString alloc] initWithData:(NSData *)responseObject encoding:NSUTF8StringEncoding];
NSLog(@"****success = %@, %@", operation, response);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSString *response = [[NSString alloc] initWithData:(NSData *)[operation responseObject] encoding:NSUTF8StringEncoding];
NSLog(@"****fail = %@, %@, %@", operation, error, response);
}];


用图示讲解一下结构:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息