我正在开发一个使用网络服务数据的应用程序。我尝试使用 afnetworking 3.x 从网络服务使用数据。我卡在了某个地方。不知道从这里到哪里去。希望得到你的帮助。
NSString *mainapiKey = [NSString stringWithFormat:@"12345"];
NSString *urlStringgetairport = [NSString stringWithFormat:@"http://mobileapi.uk/"];
NSURL *getairportUrl = [NSURL URLWithString:urlStringgetairport];
NSMutableURLRequest *finalRequest = [NSMutableURLRequest requestWithURL:getairportUrl];
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"
"<GetAirport xmlns=\"http://mobileapi.uk/\">\n"
"<Authkey>%@</Authkey>\n"
"<AirportCode>%@</AirportCode>\n"
"</GetAirport>\n"
"</soap:Body>\n"
"</soap:Envelope>\n"
,mainapiKey, @""];
NSData *soapdata = [soapmessage dataUsingEncoding:NSUTF8StringEncoding];
NSString *messageLength = [NSString stringWithFormat:@"%lu", (unsigned long)[soapmessage length]];
[finalRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[finalRequest addValue:@"http://mobileapi.uk/GetAirport" forHTTPHeaderField:@"SOAPAction"];
[finalRequest addValue:@"mobileapi.uk" forHTTPHeaderField:@"HOST"];
[finalRequest addValue:messageLength forHTTPHeaderField:@"Content-Length"];
[finalRequest setHTTPMethod:@"POST"];
[finalRequest setHTTPBody:soapdata];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:urlStringgetairport parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"output :%@", responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
网络服务输出是一个json
正常获取数据成功
最佳答案
修改以下代码
[manager GET:urlStringgetairport parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"output :%@", responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
到此代码
manager.responseSerializer = [AFJSONResponseSerializer serializer];//only if your response type is JSON
NSURLSessionDataTask *task = [manager dataTaskWithRequest:finalRequest completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
NSLog(@"output :%@", responseObject);
}];
[task resume];
您的代码中的问题是,您创建了 url 请求并且没有使用 AFNetworking API,您误以为 URL 调用了 GET 方法。仅使用您正在加载的代码 - 意味着将 url 放入浏览器的效果相同。
关于ios - 如何使用 AFNetworking 3.x 在 ios,objective-C 中使用来自 SOAP web 服务的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34487955/