专家
我正在尝试实现一个处理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标头并不重要。
答案 0 :(得分:1)
如果你不控制服务器,那么可能不是。如果您这样做,那么根据您使用服务器端的内容,您可以发送没有标题的响应。
看起来你正在使用Java,我怀疑有些库可以帮助你提取响应而无需自己解析它。这比没有标题的黑客攻击更好。
答案 1 :(得分:1)
即HTTP协议正在运行。你总是得到标题作为回应。 我很确定,Java已准备好在某处使用http客户端。我建议你使用它。
答案 2 :(得分:1)
不,你总会得到回头。并且您将不得不解析它,因为您尝试检索的资源可能有不同的编码和/或多个部分。
另一方面,已经通过像wget(1)
这样的工具为您完成了这项工作。您可以直接使用它们,也可以查看源代码以找出您需要以编程方式执行的操作。