在 Java 中复制 Curl unix-socket 命令
Replicate Curl unix-socket command in Java
我想在键入以下内容时获得 curl 输出的相同字符串标准:
curl --unix-socket file.sock http://path/to/rest/request
在我的 Java 代码中。
我发现我需要使用 AFUNIXSocket,但我只能在连接时设置套接字文件,所以我想我必须手动管理我的 http 连接。
有没有办法让它更简单?如何通过我创建的套接字启动 http 连接?
所以,我尝试自己管理 http 连接,它有效,但我仍在寻找一种更简洁的方法来做到这一点。
我就是这样做的:
AFUNIXSocket s = AFUNIXSocket.newInstance();
AFUNIXSocketAddress sockAdd = new AFUNIXSocketAddress(new File("file.sock"));
s.connect(sockAdd);
BufferedReader bf = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.write("GET /to/rest/request HTTP/1.1\r\n");
pw.write("Host: path\r\n");
pw.write("Accept:*/*\r\n");
pw.write("\r\n");
pw.flush();
String reply = "";
Thread.sleep(500);
while (bf.ready())
reply = reply + bf.readLine() + "\n";
像这样进行 curl 调用也是一样的:
curl --unix-socket file.sock http://path/to/rest/request
我想在键入以下内容时获得 curl 输出的相同字符串标准:
curl --unix-socket file.sock http://path/to/rest/request
在我的 Java 代码中。 我发现我需要使用 AFUNIXSocket,但我只能在连接时设置套接字文件,所以我想我必须手动管理我的 http 连接。
有没有办法让它更简单?如何通过我创建的套接字启动 http 连接?
所以,我尝试自己管理 http 连接,它有效,但我仍在寻找一种更简洁的方法来做到这一点。 我就是这样做的:
AFUNIXSocket s = AFUNIXSocket.newInstance();
AFUNIXSocketAddress sockAdd = new AFUNIXSocketAddress(new File("file.sock"));
s.connect(sockAdd);
BufferedReader bf = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.write("GET /to/rest/request HTTP/1.1\r\n");
pw.write("Host: path\r\n");
pw.write("Accept:*/*\r\n");
pw.write("\r\n");
pw.flush();
String reply = "";
Thread.sleep(500);
while (bf.ready())
reply = reply + bf.readLine() + "\n";
像这样进行 curl 调用也是一样的:
curl --unix-socket file.sock http://path/to/rest/request