Java Socket向服务器发送HEAD请求时出现Bad Request错误求助
用Java Socket实现HEAD请求的尝试
我最近在尝试通过Socket建立连接,发送HEAD请求并获取服务器响应,参考了Stack Overflow和谷歌上的大量示例代码,写出了如下代码(目前还未完成):
import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.Socket; public class ClientTCPSocket { public static final int PORT = 80; public static void main(String argv[]) { BufferedReader inputK... // 代码片段未完整粘贴 } }
完成这个功能的几个关键提示:
- 发送的HEAD请求必须严格遵循HTTP协议规范,一个标准的HEAD请求示例如下:
注意请求头末尾必须有两个连续的换行(即HEAD / HTTP/1.1 Host: your-target-domain.com Connection: close\r\n\r\n),这是HTTP请求结束的标志 - 发送请求时要使用
DataOutputStream的writeBytes()方法把请求内容发送出去,之后记得调用flush()确保数据全部发送 - 读取响应时,用
BufferedReader逐行读取服务器返回的内容,直到流结束 - 务必做好异常处理,比如捕获
IOException来处理连接失败、超时等情况 - 所有IO资源(Socket、流对象)使用完毕后要关闭,最好用try-with-resources语法自动管理资源,避免泄漏
内容的提问来源于stack exchange,提问作者Shudy
相关产品推荐
相关产品推荐

