1

このサイトでプログラムを使用してファイルをダウンロードしようとしていますが、強調表示されたダウンロード ボタン (「下载」) をクリックすると、Javascript が実行されることがわかりました。document.getElementById('downLoad').action='/download.php?fileid=11024011';downishare('0');

私の Mac では問題なく動作し、Safari で実行するとファイルがダウンロードされます。しかし、私が使用するとき

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('downLoad').action='/download.php?fileid=11024011'"]];

何も返しません。

ダウンロードURLを取得する理由と方法を知っている人はいますか?

ありがとう。

4

2 に答える 2

0

ええと... ダウンロード URL は次のとおりです: http://ishare.iask.sina.com.cn/download.php?fileid=11024011

Chrome の [Network] タブまたは firefox の firebug でも確認できます。しかし...直接アクセスしようとすると、リダイレクトされます。リファラー URL など、サーバー側でリクエストの検証が行われる場合があります。

于 2012-12-04T13:21:09.337 に答える
0

リンクを解析するための webView デリゲート メソッドを実装してみましたshouldStartLoadWithRequestか?


- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
if ([[[request URL] absoluteString] hasPrefix:@"http://ishare.iask.sina.com.cn/download.php?fileid="])
//I believe this would download everything that has a link prefix of "http://ishare.iask.sina.com.cn/download.php?fileid="
//So you should create some sort of checker to make sure it only downloads the file they select
        // Determile cache file path
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *filePath = [NSString stringWithFormat:@"%@/%@", [paths objectAtIndex:0],@"index.html"];   
        // Download and write to file
        NSURL *url = [NSURL URLWithString:[[request URL] absoluteString]];
        NSData *urlData = [NSData dataWithContentsOfURL:url];
        [urlData writeToFile:filePath atomically:YES];

        // Load file in UIWebView
        [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];

        return NO;
    }
    else {
        return YES;
    }
于 2012-12-18T19:26:30.563 に答える