运行后出现的错误如下:
HTTP/1.1 505 HTTP Version Not Supported
Server: Apache-Coyote/1.1
Date: Thu, 30 Oct 2008 15:22:03 GMT
Connection: close

解决方案 »

  1.   

    在我机器上测试通过
    "GET /java2000/test.htm HTTP/1.1"
    填写具体的请求页面
    我去掉了Content_Type,
    现在还有编码问题楼主自己看吧,建议使用httpclient 用socket太麻烦
    public static void main(String[] args) throws Exception {
    Socket s = new Socket("127.0.0.1", 8080);
    OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
    BufferedWriter bw = new BufferedWriter(osw); bw.write("GET /java2000/test.htm HTTP/1.1");
    bw.newLine();
    bw.write("Host: 127.0.0.1:8080");
    bw.newLine();
    bw.newLine();
    bw.flush(); BufferedReader br = new BufferedReader(new InputStreamReader(s
    .getInputStream()));
    String str = null;
    while ((str = br.readLine()) != null) {
    System.out.println(str);
    } bw.close();
    br.close();
    s.close(); }
      

  2.   

    后来我有检查了下,发现代码有点问题,因为程序是利用HTTP协议,访问TOMCAT,所以程序的格式除了要遵循JAVA规范外,逻辑上,也就是功能的实现上要遵循HTTP 协议,修改后的代码如下,再跑就能把TOMCAT默认的主页源码给DOWN下来并打印出来了:
    import java.net.*;
    import java.io.*;public class HttpTest{
    public static void main (String[] args)throws Exception{
    Socket s = new Socket("127.0.0.1",8080);
    OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
    BufferedWriter bw = new BufferedWriter(osw);

    bw.write("GET / HTTP/1.1");  //此处第一个斜杠的前后要有空格
    bw.newLine();
    bw.write("Host: 127.0.0.1:8080");
    bw.newLine(); //注:此处是后家的
    bw.write("Content-Type: text/html");
    bw.newLine();
    bw.newLine();
    bw.flush();

    BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
    String str = null;
    while((str=br.readLine())!=null){
    System.out.println(str);
    }

    bw.close();
    br.close();
    s.close();


    }
    }
      

  3.   

    谢谢你的回复,我后来也检查了下,发现主要是因为我的功能实现上没有遵循HTTP/1.1协议,我将源代码修改了下,你将其中一条语句出去也刚好使的程序遵循了HTTP协议,就是没发送一条语句就要打印一个换行,就是程序中的bw.newLine();