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