gpt4 book ai didi

Java 套接字 : HTTP/1. 1 505 不支持 HTTP 版本

转载 作者:行者123 更新时间:2023-12-02 01:54:07 25 4
gpt4 key购买 nike

我正在创建一个简单的 HTTP 客户端。我遵循 here 中的代码示例它适用于除 www.httbin.org 之外的许多网站。当我尝试 www.httbin.org我收到以下错误:

HTTP/1.1 505 HTTP Version Not Supported
Connection: close
Server: Cowboy
Date: Fri, 28 Sep 2018 16:28:50 GMT
Content-Length: 0

我看过其他答案,但没有帮助。

这是我的测试代码:

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

public class Main {

public static void main(String[] args) throws IOException {
//Connection details
InetAddress address = InetAddress.getByName("www.httpbin.org");
Socket mySocket = new Socket(address, 80);

//Streams
PrintWriter mySocketOutput = new PrintWriter(mySocket.getOutputStream(), true);

InputStreamReader inputStreamReader = new InputStreamReader(mySocket.getInputStream());

//Headers
mySocketOutput.println("GET / HTTP/1.0");
mySocketOutput.println("Host: www.httpbin.org");
mySocketOutput.println("Connection: close");
mySocketOutput.println();

boolean loop = true;
StringBuilder stringBuilder = new StringBuilder();

//reading results from server
while (loop) {
if(inputStreamReader.ready()) {
int currentChar = 0;
while (currentChar != -1) {
currentChar = inputStreamReader.read();
stringBuilder.append((char) currentChar);
}
loop = false;
}
}

//print result
System.out.println(stringBuilder.toString());
mySocket.close();
}
}

最佳答案

虽然您的请求看起来与 HTTP 类似,但事实并非如此。根据标准,以 HTTP 结尾的行是 \r\n而不是一个简单的\n就像你对 println 所做的那样。如果在所有位置都使用正确的行结尾(即,对于包含内容的每一行,以及结束请求 header 的“空”行),它也适用于 www.httpbin.org .

HTTP/1.1 505 HTTP Version Not Supported

为什么服务器给出这个令人困惑的答案?由于您的请求在 HTTP header 和(空)HTTP 正文之间没有正确的分隔符,因此假定为 HTTP 0.9 请求。早已过时的HTTP 0.9协议(protocol)不需要仅包含 \r\n 的空行作为请求 header 的结束,因为 HTTP 0.9 中本来就没有 header 和正文之类的东西。

I'm creating a simple HTTP client.

请不要低估编写正确的 HTTP 客户端的复杂性。例如,您作为自己的客户端基础引用的代码不仅使用了错误的请求行尾,而且还声称支持 HTTP/1.1,但无法处理正文的分块传输编码。

如果您真的想学习协议(protocol),也许您也应该跳过本网站中的其他代码。至少Thin SMTP Client还使用了损坏的协议(protocol)实现。

关于Java 套接字 : HTTP/1. 1 505 不支持 HTTP 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52559483/

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