Servlets 通过HTTP Post重定向将xml文件发送到另一台服务器

Servlets 通过HTTP Post重定向将xml文件发送到另一台服务器,servlets,redirect,Servlets,Redirect,在servlet中接收到post请求后,我必须重定向到另一台服务器,同时我必须在重定向请求中传递一个xml文件 例如,我必须从servlet重定向到“”,并在请求中传递一个xml文件 我尝试了以下方法,但没有成功 response.sendRedirect-它只创建get请求,因此无法发送xml HttpClient或URLConnection-它正在创建一个新请求,而不是执行实际的重定向 中间jsp—将请求转发到中间jsp并从jsp提交 它在参数中发送xml,而不是在InputStream中

在servlet中接收到post请求后,我必须重定向到另一台服务器,同时我必须在重定向请求中传递一个xml文件

例如,我必须从servlet重定向到“”,并在请求中传递一个xml文件

我尝试了以下方法,但没有成功

  • response.sendRedirect
    -它只创建get请求,因此无法发送xml
  • HttpClient或URLConnection-它正在创建一个新请求,而不是执行实际的重定向
  • 中间jsp—将请求转发到中间jsp并从jsp提交
  • 它在参数中发送xml,而不是在InputStream中


    请告诉我如何实现这一点。

    重定向(HTTP或HTML)只能在URL上操作,而不是表单提交,表单提交通过“多部分/表单数据”表单编码为上传文件提供内置支持,因此您必须在URL内对文件进行编码,这将严重限制您,因为最低公分母(Internet Explorer)URL的最大长度约为2000个字符。如果文件小于此值,则可以将文件编码为URL查询参数。否则,这可能是不可能的,但如果其他人知道实现它的方法,我将得到纠正。

    事实上,我一夜之间想出了一种方法:返回一个包含表单的页面,其中隐藏输入包含文件数据,表单的“action”设置为重定向URL,然后调用表单的submit()方法在页面加载时使用Javascript。这假设您的用户启用了Javascript,但这是目前非常安全的假设。感谢Laird的响应。正如我在帖子中提到的,我试过这个。我无法更改接收器的代码。接收方的代码期望请求体中的xml为application/xml。接收方正在从request.getInputStream()读取它。使用您提到的方法,它将xml作为请求参数发送。我想在请求体中以application/xml的形式发送它。那么,您最好的选择可能是#3,但是不要执行jsp提交,而是找到一种方法来构造并发送您想要发送的定制请求。我不熟悉jsp API,因此我无法建议您如何使用特定函数来实现这一点,但一般来说,最坏的情况是您必须使用套接字连接函数来连接,然后将自定义请求写入套接字,其中包括收件人所需的XML文件数据,然后阅读套接字以检查是否成功,然后关闭它。或者,如果您想从客户端尝试,也许这个问题可以帮助您:我做了一些研究,研究了如何使用jsp来实现一个服务器端解决方案,如果您真的想实现一个服务器端解决方案,那么您最好的选择是。下面是另一个可能有帮助的问题: