SOAP:调用失败:java.io.IOException:无法解析文档; HTTP 200 OK

2020-09-19 15:23发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我正在使用PI Dual Stack 7.30,并且具有scenaio RFC(ECC)-> PI-> SOAP。(3rd)。

处于同步或异步模式下,SOAP Receiver通道都会收到错误:

SOAP:调用失败:java.io.IOException:无法解析文档; HTTP 200 OK。

以下日志:

但是,3rd检查消息已收到并且没有错误。

我已经检查过,第三个响应是text/utf-8格式的消息。

然后,我尝试使用Soap UI工具直接调用soap服务,一切正常。

甚至,我使用提供的WSDL在ECC中生成客户端代理来测试SOAP服务,并在ABAP开发人员的帮助下调用该服务,一切正常。

soap ui直接发送的消息如下:

那么,我该如何克服这个错误?

请给我一些建议。

谢谢。

(18.3 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我正在使用PI Dual Stack 7.30,并且具有scenaio RFC(ECC)-> PI-> SOAP。(3rd)。

处于同步或异步模式下,SOAP Receiver通道都会收到错误:

SOAP:调用失败:java.io.IOException:无法解析文档; HTTP 200 OK。

以下日志:

但是,3rd检查消息已收到并且没有错误。

我已经检查过,第三个响应是text/utf-8格式的消息。

然后,我尝试使用Soap UI工具直接调用soap服务,一切正常。

甚至,我使用提供的WSDL在ECC中生成客户端代理来测试SOAP服务,并在ABAP开发人员的帮助下调用该服务,一切正常。

soap ui直接发送的消息如下:

那么,我该如何克服这个错误?

请给我一些建议。

谢谢。

(18.3 kB)
付费偷看设置
发送
7条回答
骆驼绵羊
1楼 · 2020-09-19 16:03.采纳回答

您好吴峰

使用以下XSLT代码在您的请求消息中"添加肥皂信封":

 
 
 
 
 
  http://tempuri.org/DeviceCategoryInput 
 
 
 
 
 
 
 
 

使用下面的XSLT代码从响应消息的肥皂信封中提取身体内容:

 
 
  
 
 
 
 
 

在操作映射中,请求映射程序的顺序应类似于:

  • 请求消息映射
  • XSLT映射(在请求消息中添加soap-envelope)

请求映射程序应类似于:

  • XSLT映射(从肥皂响应中提取身体内容)
  • 响应消息图

在肥皂接收器频道中:

  • 选中" 请勿使用肥皂信封"
  • 在"模块"标签中,使用最初回复中给出的模块参数应用内容类型的转换

一旦使用上述配置触发了消息,请交叉验证肥皂请求有效负载。

此致

Dilip

宇峰科技
2楼-- · 2020-09-19 15:52

很好,谢谢。...

N-Moskvin
3楼-- · 2020-09-19 15:52

您好吴峰

在PI的SXMB_Moni中,检查以下内容:

[第一]

  • XML原始消息->入站消息(CENTRAL)-> XML验证出站通道请求->有效负载-> MainAttachment(text/xml; charset = utf-8)
  • 将此与您的SOAP-UI的请求消息进行比较

[第二个]

  • 响应消息ID->入站消息(CENTRAL)->有效负载-> MainAttachment(text/xml; charset = utf-8)
  • 将此与您的SOAP-UI的响应进行比较

还可以在SOAP接收器通道中进行交叉验证:

  • 选中"请勿使用肥皂信封"(此处假设在请求有效载荷中,肥皂信封已经连接)
  • 以及使用模块参数转换内容类型

以上希望对您有帮助

感谢与问候

Dilip

SAP浪
4楼-- · 2020-09-19 15:42

您好吴峰

当您收到soap:fault消息作为响应时,它与请求中的soap:version不匹配和无效的名称空间有关,以进行交叉验证,是否可以提供" Soap-UI"和" SAP-PI的SXMB_MONI"的请求有效负载,需要 比较。

关于其他测试用例,

  • 其中"如果您取消选中"请勿使用肥皂信封"选项",则第三系统会收到消息成功
  • 您如何放心?
  • 您能在SXMb_Moni中看到来自服务的响应吗?,
  • 如果是,则为其提供内容类型。 有效负载中可能存在一些无法解析的字符
  • 可能还要再检查一次,您可以验证您的WSDL文档是RPC样式的吗?
  • 如果是,请尝试以下设置:
  • 如果您解决了该问题,请告诉我,我对这种类型的错误解决方法非常感兴趣。

问候,

Dilip

半个程序猿
5楼-- · 2020-09-19 15:55

嗨Dilip,

尚未解决。

1,使用"请勿使用soap Envelope"选项的请求有效载荷和soap ui消息现已附加,请参见附件:

paload-1657dc38-5036html000016.txt

soapui-message.txt

调用服务时,服务定义和SOAP UI工具中的http登录为:

soap-ui-http-logs.txt

wsdl.txt

2,"取消选中"不使用香皂信封"选项,第三系统成功接收消息",经第三系统开发人员确认,发现消息保存在数据库中,接收时间与发送消息相同。/p>

但是,我找不到SXMb_Moni的响应有效负载,但是错误消息"

com.sap.engine.interfaces.messaging.api.exception.MessagingException:java.io.IOException:无法解析文档;无法解析文档。 HTTP 200 OK "

?在我的最后一个答复中,图形日志是通过路径Configuration and Monitoring主页-> Monitoring-> Adapter Engine-> Message MOnitor获得的。

我认为,解析响应消息时会生成错误。


3,WSDL文档不是RPC样式的,使用RPC样式时,无法显示消息类型。

haha101010
6楼-- · 2020-09-19 15:45

您好,

再观察一次,在soap-ui的响应有效负载中,没有报头。

同样根据wsdl,您的响应有效载荷应如下所示,请向第三部分小组询问。

 
 
  http://tempuri.org/DeviceCategoryInput 
 
 
 
  S 
 
 
 
 

在我们这边,当我的服务使用soap-action时,它也会在soap-response的标头中返回该信息。

骆驼绵羊
7楼-- · 2020-09-19 15:43

您好,吴峰

通过查看您的请求有效载荷

[1]我得到了一条肥皂错误消息的原因,该消息说无效的命名空间 [当未选中此选项时,请不要使用"不要使用肥皂信封"],即

  • 归因于sxmb_moni请求输入的元素" DeviceCategoryInput "中给出的命名空间
  • 并且此时您的有效载荷中没有肥皂包
  • 要遵循此建议的配置(也在我们的实时系统中),您需要执行以下操作:
  • 在Soap-Receiver Comm Channel中:
  • 选中"请勿使用肥皂信封"(此处假定,在请求有效载荷中,肥皂信封已经连接)
  • 并使用最初回复中给出的模块参数应用内容类型的转换
  • 肥皂请求格式
 
 
  http://tempuri.org/DeviceCategoryInput 
 
 
 
 
 <!-1或更多重复:->
 
  P001 
 测试
  H01 
 熔炉
 已批准
  20180522 
  20180522 
 
 
 
 
 
 

[2]使用选项" 取消检查",可以成功发送您对第三方的肥皂请求收据的确认。

  • 确实,您在响应端有解析问题,
  • 但是要注意的一点是,即使在响应过程中响应消息未进入肥皂通道
  • 毫无头绪,出了什么问题。
  • 您可以从第三者那里得到一些如何回信,或者他们可以从soap-ui工具中附加肥皂响应。

同时,您可以尝试在PI中配置类型[1]所有建议的步骤吗? 回复收据时也会出现同样的错误。

感谢与问候,

Dilip

一周热门 更多>