2016-12-27 22 views
0

我想在Android應用程序中閱讀網站的內容(http://www.google.com)。使用過時的DefaultHttpClient仍然正常工作,我總是得到約15.000個字符的內容長度:與Apache的DefaultHttpClient和HttpURLConnection不同的內容

DefaultHttpClient client = new DefaultHttpClient(); 
HttpGet g = new HttpGet(target); 
HttpResponse res = client.execute(g); 
InputStream is = res.getEntity().getContent(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 
StringBuilder builder = new StringBuilder(); 
    String line; 
    while ((line = reader.readLine()) != null) { 
     builder.append(line); 
    } 
return Base64.encodeToString(builder.toString().getBytes(), Base64.NO_WRAP); 

然而,當我使用HttpURLConnection類來達到同樣的,我得到一個不同的內容約100.000個字符的長度。

HttpURLConnection connection = (HttpURLConnection) new URL(target).openConnection(); 
InputStream is = connection.getInputStream(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 
StringBuilder builder = new StringBuilder(); 
    String line; 
    while ((line = reader.readLine()) != null) { 
     builder.append(line); 
    } 
return Base64.encodeToString(builder.toString().getBytes(), Base64.NO_WRAP); 

有誰知道,爲什麼會有這麼大的差別。謝謝!

+0

你用'HttpURLConnection'獲得了什麼問題? –

+0

您是否檢查請求是否包含相同的用戶代理? –

+0

當我使用HttpURLConnection加載了很多JavaScript事件時,DefaultHttpClient(100.000字符而不是15.000) – user7346048

回答

0

問題是由用戶代理引起的。用下面的代碼,這兩個請求表現相同:

connection.setRequestProperty("User-Agent","Apache-HttpClient"); 
相關問題