从另一个Servlet调用Servlet Post

我需要从另一个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,那么您可能希望转发它或包含它 。