gpt4 book ai didi

java - OkHttp 反向 Http

转载 作者:太空宇宙 更新时间:2023-11-04 10:35:16 26 4
gpt4 key购买 nike

如何实现反向http,如link 中所述使用 OkHttp

目前我的实现是这样的问题是我必须解析我觉得不安全的http响应,它只是一个粗略的实现,如果有人可以提供更好的替代方案

String request = "POST /reverse HTTP/1.1\r\n" +
"Upgrade: PTTH/1.0\r\n" +
"Connection: Upgrade\r\n" +
"\r\n";

Socket socket = null;
try {
socket = client.socketFactory().createSocket(ip, port);

final PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
final BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

// send the reverse http request
out.write(request);
out.flush();

// read the reverse http response
String reverseResponse = readResponse(in);

if (!reverseResponse.trim().startsWith("HTTP/1.1 101 Switching Protocols")) {
throw new IOException("can't setup reverse connection");
}

while (!stopped) {
String eventData = readResponse(in);

out.write("HTTP/1.1 200 OK\r\n" +
"Content- Length: 0\r\n\" + " +
"\r\n");
out.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

最佳答案

冷知识:巧合的是,有一个不同的人drafted类似的解决方案也巧合地将其命名为reverse-http。该规范有 Reference Java Implementation ,但对你没有用,因为你无法控制服务器端。

步入正轨:

我可以找到您感兴趣的反向http的Javascript实现 here 。查看实现提示,但是,我想您已经有了详细信息。

对于您的问题,您需要一个可以处理 http 请求(http 服务器功能)的代码片段,同时嵌入到 http 客户端库中。

使用 Okhttp (我希望您指的是 this )来实现您想要的可能需要一些工作。它提供Websocket支持,这是reverse-http的更进化版本。所以,您可以尝试自定义Websocket implementation适合您情况的 okhttp。

像您这样的简单解决方案,您不需要解析 http 响应,可以通过改编流行的 NanoHTTPD 库的代码来实现。最新版本添加了更多依赖项,但 older release只有 1 个 java 文件,没有依赖性,非常适合此类改编。

关于java - OkHttp 反向 Http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49559752/

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