【问题标题】:send xml file via HTTP Post redirect to another server [closed]通过HTTP Post重定向发送xml文件到另一台服务器[关闭]
【发布时间】:2014-01-10 17:46:54
【问题描述】:

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

例如,我必须从我的 servlet 重定向到“http://www.abc.com”并在请求中传递一个 xml 文件。

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

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

它是在参数中发送xml,而不是在InputStream中

请告诉我如何实现这一目标。

【问题讨论】:

    标签: servlets redirect


    【解决方案1】:

    重定向(HTTP 或 HTML)只能在 URL 上操作,而不是表单提交,它为通过“multipart/form-data”表单编码上传文件提供内置支持,因此您必须在 URL 本身中编码您的文件,这将严重限制您,因为最小公分母 (Internet Explorer) URL 的最大长度约为 2000 个字符。如果您的文件比这小,那么您可以将文件编码为 URL 查询参数。否则,这可能是不可能的,但如果其他人知道实现它的方法,我会予以纠正。

    【讨论】:

    • 实际上,我在一夜之间找到了一种方法:返回一个包含表单的页面,其中包含包含文件数据的隐藏输入,并将表单的“操作”设置为重定向 URL,然后在页面加载时使用 Javascript 调用表单的 submit() 方法。这假设您的用户启用了 Javascript,但现在这是一个非常安全的假设。
    • 感谢 Laird 的回复。正如我的帖子中提到的那样,我尝试了这个。我无法更改接收者的代码。接收方的代码期望请求正文中的 xml 为 application/xml。 Receiver 正在从 request.getInputStream() 中读取它。使用您提到的方法,它将 xml 作为请求参数发送。我想将它作为 application/xml 发送到请求正文中。
    • 那么,您最好的选择可能是#3,但不是进行 jsp 提交,而是找到一种方法来构造和发送您想要发送的自定义请求。我不熟悉jsp API,所以我不能建议你如何使用特定的函数来做到这一点,但一般来说,最坏的情况是你必须使用套接字连接函数来连接到abc.com,并且然后将您的自定义请求写入套接字,该请求将包括接收方要求的 XML 文件数据,然后从套接字读取以检查是否成功,然后关闭它。
    • 或者如果您想从客户端尝试,也许这个问题会有所帮助:stackoverflow.com/questions/18335281/…
    • 我对如何使用 jsp 进行了一些研究,以防您确实想实现服务器端解决方案 - 似乎您最好的选择是 Apache HttpClient API。这是另一个可能有帮助的问题:stackoverflow.com/questions/18188041/…
    猜你喜欢
    • 2011-12-03
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多