Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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 - Fatal编程技术网

Java构造http请求消息

Java构造http请求消息,java,http,sockets,Java,Http,Sockets,我在另一个线程中问了一个类似的问题,但我想我只是在这一点上遇到了语法错误。我基本上想用Java打开一个套接字,发送一个HTTP请求消息来获取特定网页的标题字段。到目前为止,我的程序是这样的: String server = "www.w3.org"; int port = 80; String uri = "/Protocols/rfc2616/rfc2616-sec5.html#sec5.1"

我在另一个线程中问了一个类似的问题,但我想我只是在这一点上遇到了语法错误。我基本上想用Java打开一个套接字,发送一个HTTP请求消息来获取特定网页的标题字段。到目前为止,我的程序是这样的:

            String server = "www.w3.org"; 
            int port = 80; 
            String uri = "/Protocols/rfc2616/rfc2616-sec5.html#sec5.1"

            Socket socket = new Socket(server, port); 

            PrintStream output = new PrintStream(socket.getOutputStream()); 
            BufferedReader socketInput = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            output.println("HEAD " + uri + " HTTP/1.1");

            //String response = ""; 
            String line = ""; 
            while((line = socketInput.readLine()) != null){
                System.out.println(line);  
            }

            socketInput.close();
            socket.close();

这真的不管用。或者它不适用于所有网站。如果有人能告诉我我正在做的事情的直接问题,那就太好了。谢谢大家!

我会使用一些更高级的组件,比如
HttpURLConnection
()或。

更改

output.println("HEAD " + uri + " HTTP/1.1");


您必须发送
主机
头,因为一个IP地址上通常有多个虚拟主机。如果您使用
HTTP/1.0
它可以在没有
Host
头的情况下工作。

这是我建议的,但我想看看这是否真的有效。
output.println("HEAD " + uri + " HTTP/1.1");
output.println("Host: " + server);
output.println();