Bonjour,

Mon but est de consommer un WebService SAP dans une application C++.

Ce WS renvoie simplement un String pour un paramètre donné.

Ci-dessous, l'interface générée par le WSDL importer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
__interface INTERFACE_UUID("{84315FF7-92AE-A15F-5A89-3820B28AEAB2}") ZQM_WEB_READMEASURE : public IInvokable
{
public:
  virtual char64          ZqmFmMeasuresRead(const int PMeaId) = 0; 
};

Et ci-après, l'utilisation du WS.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
/*1*/_di_ZQM_WEB_READMEASURE SAP_WS_ReadMeasure;
/*2*/SAP_WS_ReadMeasure = GetZQM_WEB_READMEASURE(true, "" , HTTPRIO1);
/*3*/
/*4*/lbledt_response->Text = SAP_WS_ReadMeasure->ZqmFmMeasuresRead(StrToInt(lbledt_meaID->Text));
l'execution de la ligne 4 provoque l'exception suivante:
CX_ST_MATCH_ELEMENT:XSLT exception.System expected element 'PMeaId'

Un test de ce WS avec SoapUI est concluant, mais l'erreur est reproduisible par la mise en commentaire ci-dessous:

<urn:ZqmFmMeasuresRead>
<!--PMeaId>1</PMeaId-->
</urn:ZqmFmMeasuresRead>

J'ai executé le même code avec C++ 2006, 2009 et 2010, avec le même résultat.
J'ai également essayé plusieurs options d'import de l'outil WSDL importer, y compris le Unwind Literal Params.

Tout conseil bienvenu!

DBI