用户使用互联网连接,将其重定向到互联网提供商登录页面。
在登录之前运行请求将为您提供来自提供商的html数据和来自您最初请求数据的地址的数据。
有没有办法检查您请求数据的数据地址是否与您收到响应的地址相同?
即
有没有办法获取回复网址?
答案 0 :(得分:1)
NSURLRequest
和NSURLResponse
都有URL
属性,但使用-isEqual:
may not give you the desired result进行比较。这是NSURL
上的一个类别,可以提供帮助:
@interface NSURL (Equivalence)
- (BOOL)isEquivalent:(NSURL *)aURL;
@end
@implementation NSURL (Equivalence)
- (BOOL)isEquivalent:(NSURL *)aURL
{
if ([self isEqual:aURL]) return YES;
if ([[self scheme] caseInsensitiveCompare:[aURL scheme]] != NSOrderedSame) return NO;
if ([[self host] caseInsensitiveCompare:[aURL host]] != NSOrderedSame) return NO;
if ([[self path] compare:[aURL path]] != NSOrderedSame) return NO;
if ([[self port] compare:[aURL port]] != NSOrderedSame) return NO;
if ([[self query] compare:[aURL query]] != NSOrderedSame) return NO;
return YES;
}
@end
导入该类别,您可以使用AFNetworking执行以下操作:
[self getPath:@"somePath" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
if ([operation.request.URL isEquivalent:operation.response.URL]) {
// they match
} else {
// there was a redirect
}
} failure:nil];
编辑:我很久以来已将NSURL+Equivalence
合并到我的标准工具箱中,但信用证属于danh和this excellent SO answer。