4

URL があります。ブラウザで開こうとすると、別の URL にリダイレクトされ、コンテンツが表示されます。そのコンテンツが欲しいのですが、リダイレクトされた URL を取得できません。そのため、データを表示できません。

どうすればプログラムでそれを行うことができますか??

たとえば、私が持っている URL : http://www.windpowerengineering.com/?p=11020

& リダイレクトされた URL は次のとおりです: http://www.windpowerengineering.com/design/mechanical/blades/bladeless-turbine-converts-wind-into-fluid-power/

このリダイレクトされた URL が必要です。どうすればこれを入手できますか?

4

4 に答える 4

4

1) クラスが UIWebViewDelegate プロトコルに準拠していることを指定します (また、WebView のデリゲート アウトレットがビュー コントローラーに接続されていることを確認します)。

@interface YourWebsiteViewController : UIViewController <UIWebViewDelegate>

2) 次のデリゲート メソッドを追加します。

-(void)webViewDidStartLoad:(UIWebView *)webView
{
    NSURL *url = [webView.request mainDocumentURL];
    NSLog(@"The Redirected URL is: %@", url);
}

この情報を使って何をしようとしているのかによって、このメソッドを #2 に置き換えることができます (これにより、ページが読み込まれないようにする機会が得られます)。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request mainDocumentURL];
    NSLog(@"The Redirected URL is: %@", url);
    // Return YES if you want to load the page, and NO if you don't.
    return NO;
}
于 2012-11-22T05:15:33.987 に答える
0

このデリゲートメソッドを試しましたか?

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

WebビューがWebページをロードするたびに呼び出されます。

このメソッドのパラメータの1つからURLを取得できます。request

    NSURL *regURL=[request URL];
NSString *urlString=[regURL absoluteString];
于 2012-11-22T04:35:19.947 に答える
0

JavaScript を使用する

document.referrer
于 2012-11-22T04:31:19.833 に答える
0

その URL は http ヘッダーの一部です。これが起こっていることです:

リクエスト 1: http://www.windpowerengineering.com/?p=11020

応答 1: ページが移動しましたhttp://www.windpowerengineering.com/design/mechanical/blades/bladeless-turbine-converts-wind-into-fluid-power/に移動します

そして、あなたのブラウザは次のようになります:

リクエスト 2: http://www.windpowerengineering.com/design/mechanical/blades/bladeless-turbine-converts-wind-into-fluid-power/

応答 3: これが html です

応答 1 の http ヘッダーを見ると、ヘッダーから URL を抽出できますLocation。Objective C では、これを行う 1 つの方法があります。

NSURLResponse* response = // the response, from somewhere
NSDictionary* headers = [(NSHTTPURLResponse *)response allHeaderFields];
NSString* redirection_url = [headers objectForKey:@"Location"];

headers上記のコードでは、ディクショナリからすべての応答 http ヘッダーにアクセスできます。

于 2012-11-22T04:32:29.173 に答える