Bonjour,

Je souhaite faire un client SOAP avec Visual Basic, et appeler des services de mon serveur soap développé en Python avec un serveur http CherryPy.

Voici le code de mon client :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
Dim client As MSSOAPLib.SoapClient
client = New MSSOAPLib.SoapClient
client.ClientProperty("ServerHTTPRequest") = True
client.mssoapinit("http://192.168.99.155:9001/ir_model/wsdl")
Try
  Console.Write(client.fields_get())
Catch ex As Exception
  Console.Write(ex)
End Try
Je reçois l’erreur
System.ArgumentException: La valeur n'est pas comprise dans la plage attendue.
Le serveur soap reçoit bien la demande et renvoie la réponse !

Le wsdl:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
  <?xml version="1.0" encoding="utf-8" ?> 
- <definitions xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:tns="soapserver.soapwebservice.Ir_model" xmlns:typens="soapserver.soapwebservice.Ir_model" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="soapserver.soapwebservice.Ir_model" name="Ir_model">
- <types>
- <schema targetNamespace="soapserver.soapwebservice.Ir_model" xmlns="http://www.w3.org/2001/XMLSchema">
  <xs:element name="fields_getResponse" type="tns:fields_getResponse" /> 
- <xs:complexType name="fields_get">
  <xs:sequence /> 
  </xs:complexType>
- <xs:complexType name="fields_getResponse">
- <xs:sequence>
  <xs:element name="fields_getResult" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  <xs:element name="fields_get" type="tns:fields_get" /> 
  </schema>
  </types>
  <message name="fields_get" /> 
- <message name="fields_getResponse">
  <part name="fields_getResponse" element="tns:fields_getResponse" /> 
  </message>
- <portType name="Ir_model">
- <operation name="fields_get" parameterOrder="fields_get">
  <documentation /> 
  <input name="fields_get" message="tns:fields_get" /> 
  <output name="fields_getResponse" message="tns:fields_getResponse" /> 
  </operation>
  </portType>
- <plnk:partnerLinkType name="Ir_model">
- <plnk:role name="Ir_model">
  <plnk:portType name="tns:Ir_model" /> 
  </plnk:role>
  </plnk:partnerLinkType>
- <binding name="Ir_model" type="tns:Ir_model">
  <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
- <operation name="fields_get">
  <soap:operation soapAction="fields_get" style="document" /> 
- <input name="fields_get">
  <soap:body use="literal" /> 
  </input>
- <output name="fields_getResponse">
  <soap:body use="literal" /> 
  </output>
  </operation>
  </binding>
- <service name="Ir_model">
- <port name="Ir_model" binding="tns:Ir_model">
  <soap:address location="http://192.168.99.155:9001/ir_model/wsdl" /> 
  </port>
  </service>
  </definitions>

Merci d’avance pour votre aide.