Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以使用普通套接字连接发送HTTP请求并接收不带头的响应?_Java_Http_Sockets_Http Headers - Fatal编程技术网

Java 是否可以使用普通套接字连接发送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

专家

我正在尝试实现一个处理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,我怀疑有一些库可以帮助您提取响应,而无需自己进行解析。这比试图拼凑一个没有标题的响应要好。

如果你不控制服务器,那么可能就不会。如果您这样做了,那么根据您使用的服务器端,您可能能够发送一个没有标题的响应


看起来您正在使用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下载文件。但我认为普通插座可能会给我更好的性能^_^