ios - 使用生成的 SUDZC 代理 : CX_ST_MATCH_ELEMENT 调用 SAP Web 服务时出错

标签 ios web-services soap sap sudzc

尝试从生成的 sudzc 应用程序调用 SAP SOAP Web 服务显示我不知道的错误:

SudzCExamples[5192:f803] <?xml version="1.0" encoding="utf-8"?><soap:Envelope     
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:sap-
com:document:sap:soap:functions:mc-style"><soap:Body><ZComUrlGetrecords>
<IYear>2012</IYear></ZComUrlGetrecords></soap:Body></soap:Envelope>


SudzCExamples[5192:f803] <soap-env:Envelope xmlns:soap-
env="http://schemas.xmlsoap.org/soap/envelope/"><soap-env:Header></soap-env:Header><soap-
env:Body><soap-env:Fault><faultcode>soap-env:Server</faultcode><faultstring 
xml:lang="en">CX_ST_MATCH_ELEMENT:XSLT exception.System expected element 
'IYear'</faultstring><detail><ns:SystemFault   
xmlns:ns="http://www.sap.com/webas/710/soap/runtime/abap/fault/system/">  
<Host>undefined</Host><Component>APPL</Component><ChainedException>
<Exception_Name>CX_SOAP_CORE</Exception_Name><Exception_Text>CX_ST_MATCH_ELEMENT:XSLT 
exception.System expected element 'IYear'</Exception_Text></ChainedException>
<ChainedException><Exception_Name>CX_SXMLP</Exception_Name><Exception_Text>XSLT 
exception</Exception_Text></ChainedException><ChainedException>
<Exception_Name>CX_ST_MATCH_ELEMENT</Exception_Name><Exception_Text>System expected 
element 'IYear': Main Program:/1BCDWB/WSS825E06E4DEC40F9171D| 
Program:/1BCDWB/WSS825E06E4DEC40F9171D| Line: 18| Valid:X</Exception_Text>
</ChainedException></ns:SystemFault></detail></soap-env:Fault></soap-env:Body></soap-
env:Envelope>

2012-03-11 20:09:30.631 SudzCExamples[5192:f803] soap-env:Server CX_ST_MATCH_ELEMENT:XSLT 
exception.System expected element 'IYear'
(null)

奇怪的是,请求似乎有 IYear 元素。谁能告诉我在哪里搜索问题?

最佳答案

我昨天遇到了同样的问题,经过一些实验后发现了解决方案。我做的第一件事是使用我的 SoapUI 客户端成功发出请求。 SoapUI 提供免费试用版,即使您不使用免费试用版,您仍然可以使用它来访问 Web 服务而无需注册。我使用我发出的成功请求中的 xml 与 SudzC 发出的请求进行比较。它们在几个方面有所不同,SudzC 形成请求的方式是不够的。

我给你的建议是比较这两个请求并更改 SudzC 的请求以匹配 SoapUI 请求。您可以通过编辑 SudzC 提供给您的 Soap 源代码来完成此操作,该源代码特别位于 Soap.m 文件的 createEnvelope 函数中。

此外,如果您的请求具有空 header ,SudzC 不会包含请求的 header 部分。在信封的命名空间部分之后的空 header 中进行硬编码。完成所有这些工作为我解决了这个确切的问题。

关于ios - 使用生成的 SUDZC 代理 : CX_ST_MATCH_ELEMENT 调用 SAP Web 服务时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9658091/

相关文章:

ASP.NET Web API 私有(private) Controller

java - 我能不能把 'bounce'一个文件上传到一台服务器直接发到另一台服务器?

PHP PDO 返回空列名

iphone - 具有自动滚动功能的 UILabel

ios - 如何在 swift 中使用 dbAccess 的特定字段更新多条记录

asp.net - 在 .net 3.5 解决方案中发布到 Web 服务

Python suds 错误创建对象

c++ - 哪个 linux C/C++ SOAP 库?需要非常轻量级的建议

ios - 确定哪个 CocoaPod(s) 需要特定的依赖

ios - 更改自动布局常量不会更新其框架