2010-11-18 14 views
2

私はこのコードでURLからページの内容を取得したい:URLからページコンテンツを取得しますか?

public static String getContentResult(URL url) throws IOException{ 

    InputStream in = url.openStream(); 
    StringBuffer sb = new StringBuffer(); 

    byte [] buffer = new byte[256]; 

    while(true){ 
     int byteRead = in.read(buffer); 
     if(byteRead == -1) 
      break; 
     for(int i = 0; i < byteRead; i++){ 
      sb.append((char)buffer[i]); 
     } 
    } 
    return sb.toString(); 
} 

しかし、このURLで:http://portal.acm.org/citation.cfm?id=152610.152611&coll=DL&dl=GUIDE&CFID=114782066&CFTOKEN=85539315 私はAsbtractを得ることができません:データベース管理システムが管理していきます.....

私は問題解決の解決策を教えてくれますか? ありがとうございます

+0

可能なdup:http://stackoverflow.com/questions/1255730/java-retrieve-html-page-in-proper-encoding –

+0

@Matt Ballここでの問題は、OPが取得するには実行するJavaScriptが必要ですその意味での質問は根本的に異なっています。 –

答えて

3

はGETリクエストのヘッダを出力:

HTTP/1.1 302 Moved Temporarily 
Connection: close 
Date: Thu, 18 Nov 2010 15:35:24 GMT 
Server: Microsoft-IIS/6.0 
location: http://portal.acm.org/citation.cfm?id=152610.152611&coll=DL&dl=GUIDE 
Content-Type: text/html; charset=UTF-8 

これは、サーバが新しい場所の住所をダウンロードして、あなたを望んでいることを意味します。そのため、UrlConnectionから直接ヘッダーを取得し、そのリンクに従うか、HttpClientを自動的に使用して自動的にリダイレクトに従います。コードは以下のHttpClientに基づいています:あなたが使用する必要があります

public class HttpTest { 
    public static void main(String... args) throws Exception { 

     System.out.println(readPage(new URL("http://portal.acm.org/citation.cfm?id=152610.152611&coll=DL&dl=GUIDE&CFID=114782066&CFTOKEN=85539315"))); 
    } 

    private static String readPage(URL url) throws Exception { 

     DefaultHttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet(url.toURI()); 
     HttpResponse response = client.execute(request); 

     Reader reader = null; 
     try { 
      reader = new InputStreamReader(response.getEntity().getContent()); 

      StringBuffer sb = new StringBuffer(); 
      { 
       int read; 
       char[] cbuf = new char[1024]; 
       while ((read = reader.read(cbuf)) != -1) 
        sb.append(cbuf, 0, read); 
      } 

      return sb.toString(); 

     } finally { 
      if (reader != null) { 
       try { 
        reader.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
} 
+0

私はapacheからhttpcoreでそれを動かすことができないので、このコードのためにどのlibを使用するかを私に尋ねることができます! – tiendv

+1

私はあなたのコードを実行することができます!しかし、結果は私のコードと同じですか? – tiendv

+0

@tiendv:私はこのコードを試したところ、リダイレクトされたページを期待どおりに取得しています。何を得ようとしていますか? – dacwe

0

指定されたURLには「データベース管理...」はありません。おそらく、それはjavascriptによって動的に読み込まれます。あなたはそのようなコンテンツをダウンロードするためにより洗練されたアプリケーションが必要です;)

0

あなたが探しているコンテンツはこのURLに含まれていません。ブラウザを開いてソースコードを表示します。代わりに、多くのjavascriptファイルが読み込まれます。私は、AJAX呼び出しによってコンテンツが後で取得されると思います。コンテンツの読み込み方法を知る必要があります。

Firfox Plugin Firebugは、より詳細な分析に役立ちます。

0

URLは次のとおりです。

http://portal.acm.org/citation.cfm?id=152610.152611&coll=DL&dl=GUIDE 

(dacweで述べたように)あなたが投稿元のURLがリダイレクト送信するので。

関連する問題