我正在開發一個基於HTTP的客戶端服務器應用程序在Java中。我有一個客戶端程序和一個serer程序。基本上,客戶端通過Http發送文件,但在讀取數據時服務器端出現問題。如果我發送大於8KB的文件,我只能在服務器端獲得前8KB的字符。我在stackoverflow上搜索類似的問題,事實證明,該實體被緩衝,所以我必須使用BufferedHttpEntity。這裏是我的代碼:HTTP:如何正確讀取來自BufferedHttpEntity的數據
BufferedHttpEntity buffEntity = new BufferedHttpEntity(entity);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
buffEntity.writeTo(baos);
while (buffEntity.isStreaming()) {
buffEntity.writeTo(baos);
}
Log.i("Data received", baos.toString());
的問題是,我發送一個16KB的文件,並在控制檯中顯示的最後一個字母是在一半的文檔。我真的不知道如何閱讀緩衝實體的其餘部分。但是,如果我寫的實體的內容到一個文件中(如下圖所示),它工作得很好,所以這是很奇怪:
File f = new File("mnt/sdcard/file.txt");
FileOutputStream os = new FileOutputStream(f);
buffEntity.writeTo(os);
while (buffEntity.isStreaming()) {
buffEntity.writeTo(os);
}
此步驟後,如果我看「MNT/SD卡/文件.txt「,文件完整(沒有字符缺失)。我不知道我在做什麼錯誤的ByteArrayOutputStream,因爲它沒有得到所有的內容。任何幫助將非常感激!
我已經試過這個(我找到了相同的教程),但我有同樣的問題。我只收到第一部分的內容。真奇怪的是它工作正常FileOutputStream – user2435860
inputStream和我發佈的答案是關於閱讀BufferedHttpEntity而不是寫關於如何與FileOutputStream說,以及你如何從BufferedHttpEntity讀取數據的問題 –
我說我已經試過這個,它不起作用。我仍然有同樣的問題。 – user2435860