Вот мой Java HTTP сервер программы:Отправить HttpGet запрос через соединение TCP на «локальный»
package alan;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleHTTPServer {
public static void main(String args[]) throws IOException {
ServerSocket server = new ServerSocket(8080);
System.out.println("Listening for connection on port 8080 ....");
while (true) {
Socket clientSocket = server.accept();
InputStreamReader isr = new InputStreamReader(clientSocket.getInputStream());
BufferedReader reader = new BufferedReader(isr);
String line = reader.readLine();
while (!line.isEmpty()) {
System.out.println(line);
line = reader.readLine();
}
}
}
}
Хотя эта программа работает, если я пишу «http://localhost:8080» на веб-браузер, программа может обрабатывать Http получает запрос, и он выводит результат на консоли Eclipse, но я хочу сделать это с помощью java-кода.
На самом деле, прежде всего, я хочу создать класс, имя которого является SimpleHTTPClient, и я хочу создать соединение TCP Socket с классом SimpleHTTPServer и отправить HTTPGET-запрос через java-код на мой localhost. Как я могу это сделать? На самом деле, я могу отправить HttpGet запрос с подключением к URL, как это:
package alan;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;
import java.net.UnknownHostException;
public class SimpleHTTPClient {
static Socket socket = null;
public static void main(String args[]) throws UnknownHostException, IOException {
URL oracle = new URL("http://localhost:8080");
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
}
Но я хочу, чтобы отправить запрос HttpGet через соединение TCP сокет к моему локального хоста. Как я могу это сделать?
На самом деле, я уже вижу этот пост: HTTP: //stackoverflow.com/questions/10673684/send-http-request-manually-via- socket --- Но я не могу понять, что я могу даже написать это: pw.print («HELLO \ r \ n»); pw.print ("Host: AHMET \ r \ n \ r \ n"); pw.flush(); --- так что я имею в виду, я могу печатать все, что пишу, я думаю, я не могу понять заголовок логики запроса ... – Ozlu
Не используйте символы возврата печати и возврата. Используйте println. Пойдите, как ответ на этот пост. – thepaulo
См. Код в моем обновленном ответе – thepaulo