肥皂网络服务中多部分请求的内容类型

Posted

技术标签:

【中文标题】肥皂网络服务中多部分请求的内容类型【英文标题】:Content type for multi-part request in soap web services 【发布时间】:2014-05-11 16:50:11 【问题描述】:

我正在编写一个 Java 客户端来调用 SOAP Web 服务。它接受一个文件作为附件,所以在 java 中,我需要将内容类型声明为 multipart。我正在使用apache http 库来编写 Java 客户端。

我在Java中指定它如下

httppost.setHeader("Content-Type", "multipart/related");

但我收到以下错误

Couldn't create SOAP message due to exception: javax.xml.ws.WebServiceException: MIME boundary parameter not foundmultipart/related

请告诉我如何解决此错误。在 Java 中指定的内容类型应该是什么。

当我将其指定为

httppost.setHeader( "Content-Type", "text/xml; charset=utf-8" ); 

再次,我得到了以下异常

 Caused by: com.sun.xml.ws.streaming.XMLStreamReaderException: XML reader error: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '-' (code 45) in prolog; expected '<'

我应该继续哪个以及如何解决相应的异常?

【问题讨论】:

【参考方案1】:

我假设您正在尝试使用 MTOM+XOP?

第一个错误很明显:你没有边界。多部分不仅仅是一种内容类型,它要求您使用必须在标题中声明的边界来标记不同的部分,并要求换行符等位于正确的位置。

其次,如果您要这样做,您不能只将文件发送到 SOAP 端点,您需要在第一部分有一个肥皂体,它在第二部分引用该文件。

【讨论】:

我正在使用 apache http 库。你能告诉我怎么做吗 要进行有效的 MTOM+XOP 交互,除了 multipart 之外,您还需要了解很多,请先阅读。 我没有使用 MTOM/XOP。已经写了一个服务。我只需要使用 Java 代码和 apache http 库来调用它。我目前卡在文件附件部分。可能是我错误地设置了内容类型或与之相关的任何内容。

以上是关于肥皂网络服务中多部分请求的内容类型的主要内容,如果未能解决你的问题,请参考以下文章

在调用 Web 服务时,是不是有一种简单的方法来获取请求的肥皂消息和响应的肥皂消息?

如何使用 PHP-curl 发送“多部分/相关”内容类型的请求?

通过尝试从肥皂服务检索数据,HTTP 请求未经授权

这个异常在 oracle jaxd-ws 肥皂网络服务中意味着啥

rest、restful 和基于肥皂的 web 服务有啥区别?

如何在具有肥皂身份验证标头的 Netbeans 中使用 .NET Web 服务