2013-05-07 52 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) {} 
} 
相關問題