2011-09-13 35 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。 –