簡體   English   中英

如何在實時線程中發送對HTTP請求的HTTP響應

[英]How to send a HTTP Response to a HTTP Request in a Live Thread

我是Java的新手,正在獲取HttpServletRequest ,但是我不知道如何使用HttpServletResponse響應請求。

這是我的示例代碼:

public void handle(String target, HttpServletRequest request,
                   HttpServletResponse response, int dispatch)
       throws IOException {
  // Scan request into a string
  Scanner scanner = new Scanner(request.getInputStream());
  StringBuilder sb = new StringBuilder();
  while (scanner.hasNextLine()) {
    sb.append(scanner.nextLine());
  }

這是我得到的樣本請求:

GET / HTTP/1.1
Host: 10.10.10.100:8800
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive

默認情況下,響應為


HTTP/1.1 200 
但是我想要像這樣的rosponse
 POST something back to the GET Request 
我該怎么做。 我應該在哪里添加代碼... ?? 實際上,我在整個過程中迷失了自己,並且仍然對Java感到不舒服,所以我不知道自己缺少什么。 任何指針,不勝感激。 謝謝!

像這樣在handle方法的末尾添加響應帖子

public void handle(String target, HttpServletRequest request,
                   HttpServletResponse response, int dispatch)
       throws IOException {
  // Scan request into a string
  Scanner scanner = new Scanner(request.getInputStream());
  StringBuilder sb = new StringBuilder();
  while (scanner.hasNextLine()) {
    sb.append(scanner.nextLine());
  }
  response.getOutputStream().println("This is servlet response");
}

好吧,假設您重寫了doPost方法。

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

        DataInputStream in = 
                new DataInputStream((InputStream)request.getInputStream());

        String text = in.readUTF();
        String message;
        try {
            message = "100 ok";
        } catch (Throwable t) {
            message = "200 " + t.toString();
        }
        response.setContentType("text/plain");
        response.setContentLength(message.length());
        PrintWriter out = response.getWriter();
        out.println(message);
        in.close();
        out.close();
        out.flush();
    }

您可以從HttpServletResponse獲取PrintWriter

例:

resp.setContentType("text/plain");    // Not required
PrintWriter out = resp.getWriter();
out.write("POST something back to the GET Request");
out.flush();
out.close();    

暫無
暫無

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

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