Я пытаюсь написать простой HTTP-клиент Java, который просто распечатывает одну строку ответа сервера. Моя проблема в том, что я не получаю ответа от сервера. Вот что я имею, который компилируется и работает без явных ошибок, он просто зависает после ввода имени хоста, например. 'www.google.com':Простой java-клиент http-сервера нет ответа сервера
import java.io.*;
import java.net.*;
public class DNSTest {
// Constructor
public DNSTest() { }
// Builds GET request, opens socket, waits for response, closes
public static void main(String[] args) throws Exception{
String line;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//For each hostname
while ((line = br.readLine()) != null){
//Resolve the hostname to an IP address
InetAddress ip = InetAddress.getByName(line);
//Open socket on ip address
Socket socket = new Socket(ip, 80);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//Send request
out.println("GET /index.html HTTP/1.0\n");
//Read one line of input
System.out.println("Response from "+line+": "+in.readLine());
}
}
}
Любые предложения? Обратите внимание, что это предполагает, что существует «index.html» - он все еще просто зависает, даже если это правда.
Используйте отладчик, чтобы увидеть, где вы код висит. – Hiro2k
Я знаю out.println ("GET /index.html HTTP/1.0 \ n"); выходит, но System.out.println («Ответ от« + строка + »:« + in.readLine()); никогда не вызывается. –
Работает для меня. Я получаю: «Ответ от www.google.com: HTTP/1.0 302 Найдено». –