Tôi không phải là lập trình viên Java chút nào. Tôi cố gắng tránh nó bằng mọi giá, nhưng tôi bắt buộc phải sử dụng nó cho một lớp (trong giáo viên yêu cầu chúng tôi sử dụng Socket(), BufferedReader(), PrintWriter() và nhiều thứ khác bao gồm cả phương thức readLine() của BufferedReader():Java, ổ cắm, BufferedReader, và readline treo ... :(
Về cơ bản, đây là vấn đề tôi có. các tài liệu nêu rõ rằng readLine nên trả về một null ở cuối dòng đầu vào, nhưng đó không phải là những gì đang xảy ra.
Socket link = new Socket(this.address, 80);
BufferedReader in = new BufferedReader(new InputStreamReader(link.getInputStream()));
PrintWriter out = new PrintWriter( new PrintWriter( link.getOutputStream(), true));
out.print("GET blah blah blah"); // http request by hand
out.flush(); // send the get please
while((s=in.readLine()) != null) {
// prints the html correctly, hooray!!
System.out.println(s);
}
Thay vì kết thúc vào cuối HTML, tôi nhận được một l trống ine, 0 và một dòng trống khác và sau đó in.readLine() treo mãi mãi. Tại sao? Giá trị rỗng của tôi ở đâu?
Tôi đã thử out.close() để xem liệu có thể Yahoo! đang thực hiện một phiên liên tục http hoặc thứ gì đó (mà tôi không nghĩ rằng nó sẽ không có tiêu đề chúng tôi sẵn sàng làm điều đó).
Tất cả các ví dụ về ổ cắm Java mà tôi đang tìm thấy trên mạng dường như chỉ ra khi vòng lặp là biểu mẫu chính xác. Tôi chỉ không biết đủ Java để gỡ lỗi điều này.
Điều này có ý nghĩa. Tôi cần kiểm tra các tiêu đề. Tôi sẽ sử dụng http1.0. – jettero
Có, cho một bài tập ở trường là điều hợp lý nhất để làm. – Bombe