2013-04-09 72 views
0

我的設備有UBlox(硬件組件)發送POST HTTP/1.0請求。Tomcat返回400而不運行servlet

集管,我在Tomcat的接收被以下:

POST sc2-http-connector-3.0.0/report HTTP/1.0 
Content-Type: application/octet-stream 
Host: xx.xx.xx.xx:8080 
Connection: TE, close 
TE: trailers 
Content-Length: 152 

請求體實際上是二進制數據。 Tomcat僅向客戶端返回400,甚至不運行僅打印標題,正文等的servlet。

public void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    System.out.println("getMethod :: " + request.getMethod()); 
    System.out.println("getContentLength :: " + request.getContentLength()); 
    System.out.println("getContentType :: " + request.getContentType()); 
    System.out.println("getProtocol :: " + request.getProtocol()); 
    System.out.println("getRemoteAddr :: " + request.getRemoteAddr()); 
    System.out.println("getRemoteHost :: " + request.getRemoteHost()); 
    System.out.println("getRemotePort :: " + request.getRemotePort()); 
    System.out.println("getRemoteUser :: " + request.getRemoteUser()); 

    printHeaders(request); 

    printByteStream(request.getInputStream()); 

    System.out.println("------------- parts, if any -------------"); 
    for (Part part : request.getParts()) { 
     System.out.println("size :: " + part.getSize()); 
     System.out.println("contentType :: " + part.getContentType()); 
     System.out.println("name :: " + part.getName()); 
     printHeaders(part); 
     printByteStream(part.getInputStream()); 
    } 

    response.setStatus(HttpServletResponse.SC_OK); 
} 

似乎沒有頭問題。我認爲這應該是錯誤的數據。但是,仍然,爲什麼Tomcat返回400並且不將控制權交給我的servlet?我怎樣才能調試呢?

回答

0

簡單地說,POST命令中的路徑缺少前導斜槓。