簡體   English   中英

Delphi Web服務中的復雜類型

[英]Complex types in Delphi web service

如何在Delphi Web服務中創建復雜類型,特別是soapenc:Array,在與使用它的類型定義相同的命名空間中可用。 目前,如果我嘗試使用從Delphi應用程序生成的wsdl在Java中創建新的Web服務,Java會出現以下錯誤:

Error resolving component 'soapenc:Array'. It was detected that 'soapenc:Array' is in namespace 'http://schemas.xmlsoap.org/soap/encoding/', but components from this namespace are not referenceable from schema document...........

如果我分析wsdl,我的所有方法和類型都使用namepsace'targetNamespace =“urn:WebserviceIntf”',但使用soapenc:Array的類型定義如下:

<xs:complexType name="ArrayOfClientDetailAcc">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence/>
<xs:attribute xmlns:n1="http://schemas.xmlsoap.org/wsdl/" ref="soapenc:arrayType" n1:arrayType="ns2:TClientDetailAccArray[]"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>

如果不可能改變這一點,我將非常感謝建議在不改變界面的情況下在Java中復制我的Delphi web服務的最佳方法,這會破壞連接到它的客戶端。

非常感謝您的幫助!

我已經嘗試按照建議的鏈接使用Axis,但也會出錯:

C:\axis>java org.apache.axis.wsdl.WSDL2Java http://mywebservice?wsdl
- Unable to find required classes (javax.activation.DataHandler and javax.mail.i
nternet.MimeMultipart). Attachment support is disabled.
WSDLException (at /definitions/binding/operation[1]/input): faultCode=INVALID_WS
DL: Element '{http://schemas.xmlsoap.org/wsdl/}input' contained unexpected attri
butes: 'message':
        at com.ibm.wsdl.util.xml.DOMUtils.throwWSDLException(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.parseBindingInput(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.parseBindingOperation(Unknown Source)

        at com.ibm.wsdl.xml.WSDLReaderImpl.parseBinding(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
        at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.jav
a:516)
        at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.jav
a:495)
        at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
        at java.lang.Thread.run(Unknown Source)

抱歉 - 基於您的評論(“在Netbeans中,使用”來自WSDL的新Web服務“),很明顯您不想創建Java Web服務客戶端而是創建Web服務服務器。 所以我的回答當然沒有用。


另請參閱: Delphi SOAP服務器 - 文檔/文字 - 可能嗎?

要解決這個問題,一個解決方案是:

  • 使用C#(WCF)或Java(JAX-WS)實現新的Web服務服務器

接着

  • 在現有的Delphi應用程序和Web服務之間構建一個簡單的消息傳遞層

要么

但是,這兩種方式都會使您的新服務與舊的Delphi客戶端不兼容。

同樣在maven axistools:1.4 wsdl4j <= 1.5.3拋出此異常。 升級到至少1.6.1或等待更新的netbeans。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM