2
用戶使用Internet連接將他重定向到Internet提供商登錄頁面。如何檢查請求地址和響應地址是否相同
在他登錄之前運行一個請求會爲您提供來自提供者的html數據以及來自您最初請求數據的地址的數據。
有沒有辦法檢查您請求數據的數據地址是否與您獲得響應的地址相同?
即
有沒有獲得響應URL的方法?
用戶使用Internet連接將他重定向到Internet提供商登錄頁面。如何檢查請求地址和響應地址是否相同
在他登錄之前運行一個請求會爲您提供來自提供者的html數據以及來自您最初請求數據的地址的數據。
有沒有辦法檢查您請求數據的數據地址是否與您獲得響應的地址相同?
即
有沒有獲得響應URL的方法?
兩個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。