使用AFNetworking 调用 Web services 接口:
+ (void)POST:(NSString *)url soapBody:(NSString *)soapBody success:(void (^)(id responseObject))success failure:(void(^)(NSError *error))failure {
NSString *soapStr = [NSString stringWithFormat:
@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\
<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/\">\
<soap:Header>\
</soap:Header>\
<soap:Body>%@</soap:Body>\
</soap:Envelope>",soapBody];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
// 设置请求头
[manager.requestSerializer setValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[manager.requestSerializer setValue:[NSString stringWithFormat:@"%zd", soapStr.length] forHTTPHeaderField:@"Content-Length"];
// 设置HTTPBody
[manager.requestSerializer setQueryStringSerializationWithBlock:^NSString *(NSURLRequest *request, NSDictionary *parameters, NSError *__autoreleasing *error) {
return soapStr;
}];
[manager POST:url parameters:soapStr progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//解析
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
}
调用:
NSString *body =
[NSString stringWithFormat:
@"<Reg xmlns=\"http://tempuri.org/\">\
<uid>%@</uid>\
<pwd>%@</pwd>\
</Reg>",self.name.text,self.pwd.text];
NSString *url = [@"请求地址" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[Networking POST:url soapBody:body success:^(id responseObject) {
NSLog(@"responseObject-%@",responseObject);
} failure:^(NSError *error) {
}];
方法原文:http://www.cocoachina.com/bbs/read.php?tid-456019-page-1.html