0

私の要件は、宛先コンテンツを取得するためにWebアプリケーションを実行し、HttpURLConnectionを使用して要求ヘッダーを追加する必要があることです。

私はこのコードを使用します

    try{
        String urlStr = "http://test/STAM/Login";

        url = new URL(urlStr);
        urlconn = (HttpURLConnection)url.openConnection();
        urlconn.setRequestProperty("Accept-Language","en-us,en;q=0.5");
        urlconn.setRequestProperty("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7");
        urlconn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16");

        urlconn.connect();
        //read the result from the server
        rd  = new BufferedReader(new InputStreamReader(urlconn.getInputStream()));
        sb = new StringBuilder();  
        while ((line = rd.readLine()) != null)
        {
            sb.append(line + '\n');
        }

        out.println(sb.toString());

   } catch(Exception e) {
        e.printStackTrace();
   } finally {
   //close the connection, set all objects to null
        urlconn.disconnect();
        rd = null;
        sb = null;
        wr = null;
        urlconn = null;
   }

結果:私のコードはソースコンテンツのみを取得しますが、css、画像ファイル、javascriptなどを取得できません。これは、「http:// localhost:8080 / test / img/test.gif」などのローカルホストからロードされるためです。 「http://test/STAM/img/test.gif」。私が間違っているか、この問題を解決する方法があれば教えてください。

どうもありがとう。

4

3 に答える 3

2

私が理解していることから、htmlページを取得するときに、ページで使用されているすべてのリソース(css/js/images/...)を取得することを期待しています。

ご存知かもしれませんが、HTMLは外部リソースを参照するマークアップ言語です。これらすべてのリソースを取得してページをレンダリングするのは、Web ブラウザーの仕事です。すべてのリソースが必要な場合は、ソース コンテンツを解析してリソースへのリンクを抽出し、個別にフェッチする必要があります。

リソースを元の場所から再利用する場合は、ページを開く場所からリソースの URL にアクセスできることに注意する必要があります。( URL は絶対または相対である可能性があります)

于 2012-10-24T08:33:59.760 に答える
1

これを行うには、HttpUrlConnectionを使用しないでください。すでに解決された問題を解決するためにhtmlファイルを解析することになります。

使用:HttpClient

于 2012-10-24T09:01:19.630 に答える