簡體   English   中英

Jetty總是在Java HttpServlet上返回400狀態代碼

[英]Jetty always returning 400 status code on Java HttpServlet

我目前正在嘗試為Java中的HttpServlet類設置單元測試。 但是,缺少Jetty文檔,但我有些困惑。 我相當確定contextPath是/ hbc,因為我在servlet中使用getContextPath()將其打印出來。 但是,我不確定a)addServlet()方法的第二個參數應該是什么,b)URI應該是什么。

狀態代碼將繼續返回400,並且內容為null。 我不確定這是否是因為我沒有指向正確的位置(但是我認為那會導致404錯誤)或是否缺少其他內容。

Servlet具有init(),processRequest(),doGet()和doPost()方法。

有什么想法嗎?

public class HBCUnitTests extends TestCase {
    private ServletTester tester;

    @BeforeClass
    public void setUp() throws Exception {
        tester = new ServletTester();
        tester.setContextPath("/hbc");
        tester.addServlet(HubCommServlet.class, "/");
        tester.start();
    }

    @AfterClass
    public void tearDown() throws Exception {
        tester.stop();
    }

    @Test
    public void test() throws Exception {
        HttpTester request = new HttpTester();
        request.setMethod("POST");
        request.setVersion("HTTP/1.1");
        request.setURI("/");

        System.out.println(request.generate());

        HttpTester response = new HttpTester();
        response.parse(tester.getResponses(request.generate()));

        System.out.println(response.getContent());
        System.out.println(response.getURI());
        System.out.println(response.getReason());

        assertEquals(200,response.getStatus());
        assertEquals("<h1>Hello Servlet</h1>",response.getContent());
    }
}

看起來addServlet()的第二個參數是servlet映射。

如果contextPath是/hbc並且您的servlet映射到/那么我希望您需要請求/hbc/

HttpTester request = new HttpTester();
...
request.setURI("/hbc/");

我最終使用JMock來測試servlet。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM