簡體   English   中英

從另一個Servlet調用Servlet Post

[英]Calling Servlet Post from another Servlet

我需要從另一個servlet調用servlet POST方法並在servlets參數中傳遞一個blob。 這是可能的,如果是這樣的話怎么辦呢。 PS:我不能使用Apache HttpClient

您需要自己創建並發送HTTP請求。 您無法使用forward / redirect / include,因為您希望將方法從GET更改為POST,並且您希望發送multipart/form-data請求。

由於HttpClient(和其他第三方庫?)顯然不是一個選項,最好的辦法是使用java.net.URLConnection提供的標准Java SE API。 簡而言之: 使用java.net.URLConnection來觸發和處理HTTP請求在底部你可以找到一個multipart/form-data示例。

請注意,此問題並非特定於servlet。 換句話說,您必須能夠使用main()方法在普通的Java應用程序中執行此代碼。 這樣可以更輕松地進行測試和微調。 一旦你開始工作,只需讓servlet執行相同的代碼。


此問題無關 ,我的印象是某處存在重大設計失敗,當然,如果兩個servlet都在同一個Web應用程序上下文中運行。 您要發送POST請求的另一個servlet顯然過於緊密耦合,應該重構。

您可以在應用程序中獲取另一個servlet的調度程序並將其轉發或包含在@Ryan建議中。 在第一個servlet中代碼應該是這樣的:

ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/otherurltoservlet");

// change your request and response accordingly

dispatcher.forward(request, response);

您的意思是從您的應用程序呼叫到另一個Web服務? 如果是這樣,那么像HttpClient這樣的東西就是你想要的。 如果您的意思是想要以編程方式在應用程序中調用另一個servlet,那么您可能希望轉發它包含它

暫無
暫無

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

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