Java 是否可以使用普通套接字连接发送HTTP请求并接收不带头的响应?
专家 我正在尝试实现一个处理HTTP协议的下载程序,我能够使用以下代码发送HTTP请求:Java 是否可以使用普通套接字连接发送HTTP请求并接收不带头的响应?,java,http,sockets,http-headers,Java,Http,Sockets,Http Headers,专家 我正在尝试实现一个处理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.ge
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,我怀疑有一些库可以帮助您提取响应,而无需自己进行解析。这比试图拼凑一个没有标题的响应要好。如果你不控制服务器,那么可能就不会。如果您这样做了,那么根据您使用的服务器端,您可能能够发送一个没有标题的响应
看起来您正在使用Java,我怀疑有一些库可以帮助您提取响应,而无需自己进行解析。这比试图拼凑一个没有标题的响应要好。这就是HTTP协议正在工作。你总是得到标题的回应。
我很确定,Java在某个地方有一个随时可用的http客户机。我建议您使用它。这就是HTTP协议正在工作。你总是得到标题的回应。
我很确定,Java在某个地方有一个随时可用的http客户机。我建议你用它。不,你总是可以拿回标题。您必须解析它,因为您试图检索的资源可能有不同的编码和/或多个部分
另一方面,这已经通过类似的工具为您完成了。您可以直接使用它们,也可以查看源代码以了解需要以编程方式执行的操作。不,您将始终返回标题。您必须解析它,因为您试图检索的资源可能有不同的编码和/或多个部分
另一方面,这已经通过类似的工具为您完成了。您可以直接使用它们,也可以查看源代码以了解需要以编程方式执行的操作。您将需要这些标题。它们显示请求是否成功处理。更不用说如何读取响应正文,因为它可以通过几种不同的方式之一发送,因为您正在发送HTTP 1.1请求。您将需要标题。它们显示请求是否已成功处理。更不用说如何读取响应正文,因为它可以通过几种不同的方式之一发送,因为您正在发送HTTP 1.1请求。感谢您的快速回复,我将尝试自己解析它~这是一项艰巨的任务。我的java非常生锈,但是你不能使用
java.net.URL
或类似的东西吗?是的,我可以使用java.net.HttpURLConnection下载文件。但我认为普通套接字可能会给我更好的性能^ ^谢谢你的快速回复,我会自己尝试解析它~这是一项艰巨的任务。我的java非常生锈,但是你不能使用java.net.URL
或类似的东西吗?是的,我可以使用java.net.HttpURLConnection下载文件。但我认为普通插座可能会给我更好的性能^_^