从另一个Servlet调用Servlet Post



我需要从另一个servlet调用servlet POST方法,并在servlet参数中传递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,那么你要么期待它,要么包含它。

最新更新