2013-04-09 69 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命令中的路径缺少前导斜杠。