从WSDL

时间:2015-06-01 20:11:46

标签: javascript wsdl

我意识到这可能看起来像是重复的,但我已经阅读了其他帖子并且它并不完全有用。

我正在研究一个项目,其中我需要从服务器端进行SOAP Web服务调用,该服务器运行在JavaScript引擎上,该引擎基本上作为Oracle数据库之上的Java包装器(因此,使用JavaScript文件)和API,他们回调Java代码并从Oracle提取数据)。我熟悉在Visual Studio中为C#生成WSDL存​​根文件,并且我已经使用工具为Java / Android执行此操作。但是,我在为JavaScript完成此操作时遇到了麻烦。

为此我已经使用Apache CXF,但结果需要一些我似乎无法找到的其他库文件。另外,我必须删除几个“maxOccur'来自一系列元素的属性'元素,因为它们在处理WSDL时会导致一堆错误。

除此之外,我必须用系统API替换任何实际的AJAX调用以进行此类调用,因为他们的JavaScript引擎不支持这些特定的功能(你知道,因为他们提供了一个要使用的功能) 。这几乎看起来可能与实际的CXF生成的文件,但它仍然调用我无法找到的外部库(在初始化方法中,我看到:this.jsutils = new CxfApacheOrgUtil();)。

这有什么好的选择吗?或者我最好尝试获取一些SOAP XML示例并解析预定义文本字符串中的标记?或许我还没有意识到另一种选择?

我还应该提一下我在CodeProject上查看了一个选项,但它自2007-2008以来一直没有更新,我不认为它适合我尝试的东西无论如何要做。

- 编辑 -

我一直在使用WSDL进行一些测试,而且我不知道这是否意味着什么,对于一个完全不同的帖子可能更好,但是这里是抛出错误的块在处理WSDL时......

   <complexType name="AuthenticationToken">
    <sequence>
     <element name="loginId" nillable="true" type="xsd:string"/>
     <element name="password" nillable="true" type="xsd:string"/>
     <element name="licenseKey" nillable="true" type="xsd:string"/>
     <element name="accountNumber" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <element name="AuthenticationToken" type="impl:AuthenticationToken" maxOccurs="1"/> 

更容易理解哪个位置&#34; maxOccurs&#34;我尝试使用Visual Studio将WSDL导入.NET项目时使用。当完全删除该属性,或将其移动到上面的&#34; complexType&#34;元素,WSDL能够无错误地处理。我不确定,这些更改实际上对生成的存根类有什么影响。

1 个答案:

答案 0 :(得分:0)

好的,我终于能够找到所需的库文件,用于通过Apache CXF生成的存根文件。我还确定了如何将自己的附加组件添加到存根中以便处理使用API​​在此系统中进行AJAX调用(不是最熟悉的在JavaScript中创建和修改“类”),所以它更像是一开始令人生畏。)

我仍然不确定如何处理“maxOccurs”属性,但我想我可以看到这些Web服务的开发团队对我遇到的错误有什么看法,现在我已经能够得到与他们联系。