TCP Socket实现HTTP客户端遇HTTP/1.1 400 Bad Request错误求助
排查HTTP客户端400 Bad Request错误
你的代码返回400错误,核心问题出在String peticio的HTTP请求格式不符合协议规范,具体问题和修复方案如下:
存在的问题
- 缺少Host请求头:HTTP/1.1协议强制要求所有请求必须包含Host头,用于指定目标服务器的主机标识,当前请求未提供该头,这是触发400错误的主要原因。
- Accept头格式错误:HTTP请求头的标准格式是
头字段名: 对应值,你写的Accept只有字段名,没有: 值的部分,不符合协议要求。 - 请求结尾未标记头部结束:HTTP请求的头部需要以**两个连续的
\r\n**作为结束标记,当前请求结尾只有一个\r\n,服务器无法正确识别请求边界。
修复后的请求字符串
将String peticio替换为以下内容:
String peticio = "HEAD /xai/xai.html HTTP/1.1\r\n" + "Host: " + http_server_address + "\r\n" + "Accept: text/html,application/xhtml+xml,*/*\r\n" + "\r\n";
修复说明
- 新增
Host头:值直接使用传入的http_server_address,满足HTTP/1.1的强制要求。 - 修正
Accept头:补充了合法的媒体类型取值(可根据实际需求调整,比如只写*/*表示接受所有类型)。 - 末尾添加空行:最后单独的
\r\n确保请求头部正确结束,让服务器能正常解析请求。
内容的提问来源于stack exchange,提问作者gfd
相关产品推荐
相关产品推荐

