2011-09-13 36 views
0
NSString* HTML = [NSString stringWithContentsOfURL:url usedEncoding:&enc error:&error]; 

很好用,但是如果有重定向我需要知道重定向頁面的url。用stringWithContentsOfURL重定向後得到url

任何想法?

謝謝~~

+0

你在哪裏使用這個urlString(HTML)是它的UIWebView或NSURLConnection的? – 0x8badf00d

回答

2

你可能會想使用NSURLConnection的並加載手動而不是使用stringWithContesOfURL方法。然後你可以在你的連接上設置一個URLConnectionDelegate。當你重定向,連接將調用您的代理此方法:

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse 

請求參數提供,你將被重定向到的URL。你可以檢查它,並做它你想要的。如果你想允許重定向繼續,那麼你應該從你的委託方法中返回它。

+0

我希望能夠同步做到這一點,但NSURLConnection似乎並沒有允許,並給我的重定向網址...此外,NSURLConnection期望我能夠找出編碼,任何想法如何去做? – itgiawa

+0

獲取重定向信息幾乎*如果使用NSURLConnections,肯定會需要異步調用。你可以看看其中一個第三方庫,看它們是否提供了你想要的東西。 –

+0

至於搞清楚編碼,如果你不知道它是什麼,你做的請求之前,您可以隨時看的HTTP響應的Content-Type頭,如果它被設置使用,以確定編碼。如果沒有設置,你可能需要假定一些默認值。 –

1

在這裏你去(同步方法):

NSURLResponse *response; 
NSError *error; 
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"URL_STRING"]]; 
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
NSLog(%@,response.URL); 
+1

工程就像一個魅力..只是一個更正,你可能不需要使用NSMutableURLRequest,你可以實現與NSURLRequest相同。但是,關鍵是捕獲returningResponse。 –