【发布时间】:2017-04-26 13:26:48
【问题描述】:
这是我的 java http 服务器程序:
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();
}
}
}
}
当这个程序运行时,如果我在 Web 浏览器上写“http://localhost:8080”,程序可以处理 Http 获取请求并在 Eclipse 控制台上打印结果,但我想使用 java 代码来完成。
实际上,首先,我想创建一个名为 SimpleHTTPClient 的类,我想创建一个与 SimpleHTTPServer 类的 TCP Socket 连接,并通过 java 代码向我的本地主机发送 HTTPGET 请求。我怎样才能做到这一点?实际上,我可以使用这样的 URL 连接发送 HTTPGET 请求:
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();
}
}
但我想通过 TCP 套接字连接向我的 localhost 发送 HTTPGET 请求。我该怎么做?
【问题讨论】: