Tôi đang tìm nạp một trang web bằng cách sử dụng Apache httpcomponents Java library. Sau khi kết nối kết quả tôi nhận được là HttpEntity
có phương thức getContent()
trả về một InputStream
và cũng có phương thức writeTo()
ghi vào OutputStream.Trong httpclient cách thanh lịch/chính xác nhất để biến HttpEntity thành một chuỗi là gì?
Tôi muốn chuyển kết quả thành Chuỗi để trích xuất thông tin. Cách thanh lịch nhất (và an toàn) để làm điều này là gì?
Một số giải pháp khả thi:
- Viết thư cho một
ByteArrayOutputStream
và sau đó chuyển đổi những byte vào một String với một constructor Chuỗi - sử dụng InputStreamReader để đọc trực tiếp từ suối, và đưa vào một StringBuilder
Cả hai cảm giác này đều hơi xấu xí. Bạn có đề nghị chọn một trong những thứ này hay cái gì khác không?
Tôi nghĩ đây là câu trả lời chính xác, thư viện cung cấp lớp EntityUtils vì lý do chính xác này –
Vấn đề với cách tiếp cận này là nếu bạn đã dọn sạch tài nguyên bằng cách gọi httpResponse.close() và muốn nhận biểu diễn chuỗi của thực thể ở nơi khác, sử dụng mã trên sẽ gây ra một ngoại lệ "java.net.SocketException: socket closed" được ném ra. –