Bonjour
j'ai récupéré la wsdl d'un serveur de webservices avec lequel je dois communiquer
pour faire simple je récupère ...

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
  ArrayOfString = array of WideString;
  ArrayOfClasse = array of MaClasse;
 
  MaClasse= class(TRemotable)
  private
    Fchaine1: WideString;
    Fchaine2: WideString;
  published
	property chaine1: WideString read Fchaine1 write Fchaine1;
	property chaine2: WideString read Fchaine2 write Fchaine2;
  end;
 
  MaClasse1 = class(TRemotable)
  private
    FMonArrayOfString: ArrayOfString;
    FMonArrayOfClasse: ArrayOfClasse;
  public
    destructor Destroy; override;
  published
    property MonArrayOfString: ArrayOfString read FMonArrayOfString write FMonArrayOfString;
    property MonArrayOfClasse: ArrayOfClasse read FMonArrayOfClasse write FMonArrayOfClasse;
  end;
 
    function  MaFonction(const MC: MaClasse1): Boolean; stdcall;
en appelant MaFonction le seveur attend que je lui envoie le flux SOAP suivant

Code xml : 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
<?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/">
  <soap:Body>
    <MaFonction>
      <MC>
        <MonArrayOfString>
          <string>string</string>
          <string>string</string>
        </MonArrayOfString>
        <MonArrayOfClasse>
          <MaClasse>
            <chaine1>string</chaine1>
            <chaine2>string</chaine2>
          </MaClasse>
          <MaClasse>
            <chaine1>string</chaine1>
            <chaine2>string</chaine2>
          </MaClasse>
        </MonArrayOfClasse>
      </MC>
    </MaFonction>
  </soap:Body>
</soap:Envelope>

or dès que je dois envoyer des "array of ..." le nom de la classe est remplacé par "item" ... je pense que cela doit pourvoir se corriger en jouant sur des options du Converter du composant THTTPRIO ou
RemClassRegistry.RegisterSerializeOptions(TypeInfo(ArrayOfString), [xoInlineArrays]) mais ça ne fonctionne pas ...
Est ce que quelqu'un a déjà été confronté à ce problème et sait comment le résoudre
Merci d'avance pour votre aide