/ / Comment créer une classe proxy dans .NET à l'aide d'un fichier WSDL? - vb.net, soap, proxy, wsdl, axis

Comment créer une classe proxy dans .NET en utilisant un fichier WSDL? - vb.net, soap, proxy, wsdl, axis

J'ai essayé de générer une classe proxy dans VB.NET à l'aide d'un fichier WSDL pour un service Web Apache Axis SOAP.

Ils m'ont fourni le fichier WSDL et, lorsque j'utilise la commande WSDL.exe (In Visual Studio 08) et que je le pointe sur le chemin d'accès local, un message d'erreur s'affiche.

wsdl /language:vb c:Orders.wsdl

(J'essaie de créer un client .NET qui utilise le service Web SOAP hébergé sur Apache Axis 2)

L'erreur

Unable to import binding "OrdersSoapBinding" from namespace "urn:company:orders:schemas:OrderTypes:1.00".

-Unable to import operation "placeOrder"

-The element "urn:company:remtp:schemas:PlaceOrderRequest:1.00:PlaceOrderRequest" is missing

if you would like more help, please type "wsdl /?"

Si j'utilise le svcutil.exe, je reçois aussi un message d'erreur ...

svcutil.exe C:Orders.wsdl /t:code /l:VB /o:"C:Orders.VB"

Quelle est la cause du problème?

Votre aide sera grandement appréciée, merci.

Code WSDL

    <?xml version="1.0" encoding="utf-8"?>

<wsdl:definitions
targetNamespace="urn:company:orders:schemas:OrderTypes:1.00"
xmlns:impl="urn:company:orders:schemas:OrderTypes:1.00"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:poreq="urn:company:remtp:schemas:PlaceOrderRequest:1.00"
xmlns:poresp="urn:company:remtp:schemas:PlaceOrderResponse:1.00"
xmlns:coreq="urn:company:remtp:schemas:CommitOrderRequest:1.00"
xmlns:coresp="urn:company:remtp:schemas:CommitOrderResponse:1.00"
xmlns="http://schemas.xmlsoap.org/wsdl/">

<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:company:orders:schemas:OrderTypes:1.00">
<import namespace="urn:company:remtp:schemas:PlaceOrderRequest:1.00" schemaLocation="../schemas/placeOrderRequest.xsd"/>

<import namespace="urn:company:remtp:schemas:PlaceOrderResponse:1.00" schemaLocation="../schemas/placeOrderResponse.xsd"/>

<import namespace="urn:company:remtp:schemas:CommitOrderRequest:1.00" schemaLocation="../schemas/commitOrderRequest.xsd"/>

<import namespace="urn:company:remtp:schemas:CommitOrderResponse:1.00" schemaLocation="../schemas/commitOrderResponse.xsd"/>

</schema>

</wsdl:types>

<wsdl:message name="placeOrderRequest">
<wsdl:part element="poreq:PlaceOrderRequest" name="parameters"/>
</wsdl:message>

<wsdl:message name="placeOrderResponse">
<wsdl:part element="poresp:PlaceOrderResponse" name="parameters"/>
</wsdl:message>

<wsdl:message name="commitOrderRequest">
<wsdl:part element="coreq:CommitOrderRequest" name="parameters"/>
</wsdl:message>

<wsdl:message name="commitOrderResponse">
<wsdl:part element="coresp:CommitOrderResponse" name="parameters"/>
</wsdl:message>

<wsdl:portType name="Orders">

<wsdl:operation name="placeOrder">
<wsdl:input message="impl:placeOrderRequest"/>
<wsdl:output message="impl:placeOrderResponse"/>
</wsdl:operation>

<wsdl:operation name="commitOrder">
<wsdl:input message="impl:commitOrderRequest"/>
<wsdl:output message="impl:commitOrderResponse"/>
</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="OrdersSoapBinding" type="impl:Orders">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="placeOrder">
<wsdlsoap:operation soapAction=""/>

<wsdl:input name="placeOrderRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>

<wsdl:output name="placeOrderResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>

</wsdl:operation>

<wsdl:operation name="commitOrder">
<wsdlsoap:operation soapAction=""/>

<wsdl:input name="commitOrderRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>

<wsdl:output name="commitOrderResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="OrdersService">
<wsdl:port name="Orders" binding="impl:OrdersSoapBinding">
<wsdlsoap:address location="https://companyorders.co.uk/endpoints/services/Orders"/>
</wsdl:port>
</wsdl:service>

</wsdl:definitions>

Réponses:

3 pour la réponse № 1

En examinant le fichier wsdl que vous avez fourni, vous verrez des références à quatre fichiers xsd (document xchema xml): ils contiennent les définitions de type et les règles de validation nécessaires à svcutil pour créer le proxy.

   <import namespace="urn:company:remtp:schemas:PlaceOrderRequest:1.00" schemaLocation="../schemas/placeOrderRequest.xsd"/>

<import namespace="urn:company:remtp:schemas:PlaceOrderResponse:1.00" schemaLocation="../schemas/placeOrderResponse.xsd"/>

<import namespace="urn:company:remtp:schemas:CommitOrderRequest:1.00" schemaLocation="../schemas/commitOrderRequest.xsd"/>

<import namespace="urn:company:remtp:schemas:CommitOrderResponse:1.00" schemaLocation="../schemas/commitOrderResponse.xsd"/>

Donc, vous avez aussi besoin de ces fichiers xsd