2013-01-07 73 views
0

我使用下面的代碼來下載大小51KBJava代碼來下載內容露天

HttpGet httpget = new HttpGet(url); 
    System.out.println("executing request" + httpget.getRequestLine()); 
    HttpResponse response = httpclient.execute(httpget); 
    HttpEntity entity = response.getEntity(); 
    System.out.println("----------------------------------------"); 
    System.out.println(response.getStatusLine()); 
    System.out.println("----------------------------------------"); 
    if (entity != null) { 
     System.out.println("Response content type: " + entity.getContentType()); 
     long contentLength = entity.getContentLength(); 
     System.out.println("Response content length: "+ entity.getContentLength()); 
     if (contentLength > 0) { 
      b = new byte[(int) contentLength]; 
      entity.getContent().read(b); 
      content=new String(b); 
      content=content.replace("\n", "").replace("\r", ""); 
      //content = StringEscapeUtils.escapeHtml(content); 
      System.out.println("Response content: " + content); 
     } 
    } 

HTML內容的只有30-40%被下載和顯示我的露天HTML內容。我無法獲得完整的內容。

我試着增加b的字節大小。但沒有任何解決辦法。

請幫我使用java代碼下載alfresco內容。任何幫助表示讚賞。提前致謝。

+0

我使用的Web服務URL至極是 「字符串URL =」 HTTP://本地主機:8080 /戶外/服務/ API /節點/內容/工作區/ SpacesStore/f3b8e734-eb84-41ba -8c66-0d0ea381d0cd「」 – aaviss

回答

2

讀取InputStream並不總是返回整個內容。您需要在循環中讀取InputStream並寫入正確的緩衝區偏移量,並根據返回值read()遞增偏移量。例如:

byte[] b = new byte[(int)contentLength]; 
int offset = 0; 
while(offset < contentLength) { 
    offset += inputStream.read(b, offset, b.length - offset); 
} 
String content = new String(b); // Or specify encoding. 

或者您可以使用類似Apache Commons IO的庫。然後,它是:

IOUtils.toString(entity.getContent(), encoding); 
+0

可以請分享任何示例 – aaviss

+0

非常感謝。它工作完美。 – aaviss