NSString* HTML = [NSString stringWithContentsOfURL:url usedEncoding:&enc error:&error];
很好用,但是如果有重定向我需要知道重定向页面的url。用stringWithContentsOfURL重定向后得到url
任何想法?
谢谢~~
NSString* HTML = [NSString stringWithContentsOfURL:url usedEncoding:&enc error:&error];
很好用,但是如果有重定向我需要知道重定向页面的url。用stringWithContentsOfURL重定向后得到url
任何想法?
谢谢~~
你可能会想使用NSURLConnection的并加载手动而不是使用stringWithContesOfURL方法。然后你可以在你的连接上设置一个URLConnectionDelegate。当你重定向,连接将调用您的代理此方法:
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
请求参数提供,你将被重定向到的URL。你可以检查它,并做它你想要的。如果你想允许重定向继续,那么你应该从你的委托方法中返回它。
我希望能够同步做到这一点,但NSURLConnection似乎并没有允许,并给我的重定向网址...此外,NSURLConnection期望我能够找出编码,任何想法如何去做? – itgiawa
获取重定向信息几乎*如果使用NSURLConnections,肯定会需要异步调用。你可以看看其中一个第三方库,看它们是否提供了你想要的东西。 –
至于搞清楚编码,如果你不知道它是什么,你做的请求之前,您可以随时看的HTTP响应的Content-Type头,如果它被设置使用,以确定编码。如果没有设置,你可能需要假定一些默认值。 –
在这里你去(同步方法):
NSURLResponse *response;
NSError *error;
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"URL_STRING"]];
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(%@,response.URL);
工程就像一个魅力..只是一个更正,你可能不需要使用NSMutableURLRequest,你可以实现与NSURLRequest相同。但是,关键是捕获returningResponse。 –
你在哪里使用这个urlString(HTML)是它的UIWebView或NSURLConnection的? – 0x8badf00d