gpt4 book ai didi

java - 通过 TCP 连接向 "localhost"发送 HTTPGET 请求

转载 作者:行者123 更新时间:2023-12-01 09:08:06 25 4
gpt4 key购买 nike

这是我的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 get 请求,并将结果打印在 Eclipse 控制台上,但我想使用 java 代码来完成。

实际上,首先,我想创建一个名为 SimpleHTTPClient 的类,我想创建一个与 SimpleHTTPServer 类的 TCP 套接字连接,并通过 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 套接字连接将 HTTPGET 请求发送到我的 localhost。我怎样才能做到这一点?

最佳答案

为此,您必须打印请求 header 。对于基本的 HTTP 请求,只需在 header 中添加 http 方法和主机即可。

看下面的代码

Socket s = new Socket(InetAddress.getByName("stackoverflow.com"), 80);
PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.println("GET / HTTP/1.1");
pw.println("Host: stackoverflow.com");
pw.println("");
pw.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String t;
while ((t = br.readLine()) != null) {
System.out.println(t);
}
br.close();

祝你好运

关于java - 通过 TCP 连接向 "localhost"发送 HTTPGET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com