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