2013-05-07 55 views
0

我正在写HTTP WEB SERVER代码。为什么响应头未显示在客户端的shell中?

直到现在我实施了GET,HEAD方法。现在我必须实现OPTIONS方法。但是这次客户端的shell没有收到响应。我不明白为什么会发生这种情况。请帮助我。我发布我的代码,请帮助检测错误。该响应客户

  else if(methodName.equals("OPTIONS")) { 
       System.out.println("GOING TO HANDLE OPTIONS REQUEST"); 

       printStream.print("HTTP/1.1 " + ServerSettings.HTTP_OK + " OK"); 
       printStream.write(EOL); 
       printStream.print("Date: " + new Date()); 
       printStream.write(EOL); 
       printStream.print("Allow: OPTIONS, GET, HEAD"); 
       printStream.write(EOL); 
       printStream.print("Content-Length: 0"); 
       printStream.write(EOL); 
      } 

      inputStream.close(); 
    printStream.close(); 

请帮我

我的代码

客户

public class Client { 

    public static void main(String[] args) { 
      HttpClient client = new HttpClient(); 
      client.getParams().setParameter("http.useragent", "Test Client"); 
      BufferedReader br = null; 

      OptionsMethod method = new OptionsMethod("http://10.40.55.240:8080/"); 

      try { 
      int returnCode = client.executeMethod(method); 
      if(returnCode == 405) { 
       System.out.println("The Options method is not implemented by this URI");     
      } else { 
       System.out.println("REACH HERE"); 
       br = new BufferedReader(new InputStreamReader(/*What I put here to get socket InputStream*/); 
       String readLine; 
       while((readLine = br.readLine()) != null) { 
        System.out.println(readLine); 
       } 
      } 
      //System.out.println(returnCode); 
      } catch(Exception e) { 
      e.printStackTrace(); 
      } finally { 
       method.releaseConnection(); 
       if(br != null) { 
        try { 
         br.close(); 
        } 
        catch(Exception e) {} 
       } 
     } 
    } 
} 

服务器代码,我怎么能接受的头球服务器。

我应该在客户端的注释部分放入什么,才能接收标题。

br = new BufferedReader(new InputStreamReader(/*What I put here to get socket InputStream*/);

回答

0

我得到了上述问题的答案,这是如下: -

由于没有Response BodyOptions Method。因此,它可以在客户端外壳显示此服务器只响应报头,并且是使用下面的语句: -

int returnCode = client.executeMethod(method); 
if(returnCode == 405) { 
     System.out.println("The Options method is not implemented by this URI"); 
} else { 
     Header[] header = method.getResponseHeaders(); 
     for(int i = 0; i < header.length; i++) { 
      System.out.println(header[i].getName() + ": " + header[i].getValue()); 
     } 
} 

如果其他方法,如果有任何反应的身体也比我们可以使用下面的代码,

try { 
    int returnCode = client.executeMethod(method); 
    if(returnCode == 405) { 
     System.out.println("The XXX method is not implemented by this URI"); 
    } else { 
     Header[] header = method.getResponseHeaders(); 
     for(int i = 0; i < header.length; i++) { 
      System.out.println(header[i].getName() + ": " + header[i].getValue()); 
     } 
     br = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream())); 
     byte[] buf = new byte[1024]; 
     String readLine; 
     while (((readLine = br.readLine()) != null)) { 
      System.out.println(readLine); 
     } 
    } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } finally { 
     System.out.println("close method"); 
     method.releaseConnection(); 
     try { 
     br.close(); 
     } 
     catch(IOException ioe) {} 
} 
相关问题