Tôi đang cố gắng tạo máy chủ proxy http trên thiết bị Android. Khi tôi thử phản hồi đọc từ máy chủ HTTP (example1.com) (example1.com chứa nội dung có độ dài tiêu đề) Nếu máy chủ HTTP chứa nội dung độ dài, sau đó tôi đọc byte từ độ dài nội dung khác tôi đọc tất cả byte của phản ứngCách đọc phản hồi HTTP qua ổ cắm?
byte[] bytes = IOUtils.toByteArray(inFromServer);
vấn đề là, khi phản ứng chứa content-length
phản ứng đọc một cách nhanh chóng. Nếu phản hồi không chứa content-length
phản hồi đọc chậm.
này mã của tôi
DataInputStream in = new DataInputStream(inFromServer);
//BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = "";
String str = "";
Integer len = 0;
while(true) {
line = in.readLine();
if (line.indexOf("Content-Length") != -1)
{
len = Integer.parseInt(line.split("\\D+")[1]);
//System.out.println("LINEE="+len);
}
out.println(line);
str = str + line + '\n';
if(line.isEmpty()) break;
}
int i = Integer.valueOf(len);
String body= "";
System.out.println("i="+i);
if (i>0) {
byte[] buf = new byte[i];
in.readFully(buf);
out.write(buf);
for (byte b:buf) {
body = body + (char)b;
}
}else{
byte[] bytes = IOUtils.toByteArray(inFromServer);
out.write(bytes);
}
out - outStream để duyệt
Tại sao bạn không sử dụng một thư viện HTTP tầm cao mới? –
Tôi đang nghiên cứu giao thức http – Petr
Được rồi, và vấn đề của bạn là có 0 nội dung để đọc khi không có tiêu đề, vì vậy nó sẽ chậm hơn vì nó đọc toàn bộ phản hồi? –