如何检查请求地址和响应地址是否相同

时间:2013-01-08 13:20:25

标签: iphone ios afnetworking

用户使用互联网连接,将其重定向到互联网提供商登录页面。

在登录之前运行请求将为您提供来自提供商的html数据和来自您最初请求数据的地址的数据。

有没有办法检查您请求数据的数据地址是否与您收到响应的地址相同?

有没有办法获取回复网址?

1 个答案:

答案 0 :(得分:1)

NSURLRequestNSURLResponse都有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合并到我的标准工具箱中,但信用证属于danhthis excellent SO answer