是否可以使用普通套接字连接发送HTTP请求并接收没有标头的响应?
问题描述:
专家是否可以使用普通套接字连接发送HTTP请求并接收没有标头的响应?
我想实现它处理HTTP协议下载,我可以使用下面的代码来发送HTTP请求:
StringBuilder request = new StringBuffer().append("GET ").append(uri.getPath());
if(uri.getQuery() != null)
request.append('?').append(uri.getQuery());
request.append(" HTTP/1.1\nHost: ").append(uri.getHost()).append("\nAccept: */*\n\n");
// send the request
outputStream.write(request.toString().getBytes("utf-8"));
outputStream.flush();
在接收到响应,我将需要救身对磁盘的响应,并完成工作。
我的问题是:有没有HTTP标头,我可以设置请求,这将导致服务器发送没有HTTP头(只有正文)的响应?
为什么我问这个问题的原因是,如果可能的话,我并不需要跳过的HTTP标头手动读取响应的时候,我可以直接开始从输入流中读取原始字节。我想要的只是响应的主体,在这种情况下HTTP标头并不重要。
答
如果你不控制服务器,那么可能不是。如果你这样做,那么根据你使用的服务器端,你可能会发送一个没有标题的响应。
它看起来像你正在使用Java,我怀疑有库可以帮助你提取响应而不用自己解析它。这会比试图将没有标题的响应拼凑在一起更好。
答
即HTTP协议正在工作。你总是得到回应的标题。 我很确定,Java已准备好在某处使用http客户端。我建议你使用它。
否!!!!!!!!!!!!!! – undone
你会想要标题。它们显示请求是否成功处理。 –
更不用说如何读取响应正文,因为它可能以几种不同的方式之一发送,因为您发送的是HTTP 1.1请求。 –