Ce que j'essaie de faire dans notre environnement d'entreprise est de me connecter à un service Web SAP en utilisant la classe PHP SoapClient en mode wsdl.SOAP avec PHP vers SAP Web Service
Jusqu'à présent, j'ai réussi à obtenir des erreurs de "propriété manquante". Lors de la résolution de toutes les erreurs de propriété manquantes Je reçois l'erreur http redoutée 500 avec le corps: savon env: Serveur
Donc, voici mon code:
class SapTest {
const SAP_WSDL_URI = *wsdl_uri*;
const SAP_USER = *username*;
const SAP_PWD = *password*;
public function execute() {
$client = new SoapClient('http://'.urlencode(self::SAP_USER).':'.urldecode(self::SAP_PWD).'@'.self::SAP_WSDL_URI,
array("trace" => 1,
"exceptions" => 1,
"login" => self::SAP_USER,
"password" => self::SAP_PWD,
'features' => SOAP_SINGLE_ELEMENT_ARRAYS)
);
$method = '_-bic_-nf2';
$parameter = array('ETColumnDescription' => null,
'ETGridData' => null,
'ETMessageLog' => null,
'ETRowDescription' => null,
'ISVar_01xwerbet' => array('Sign' => 'I',
'Option' => 'LE',
'Low' => '3',
'High' => null));
try
{
$result = $client->$method($parameter);
print_r($result);
} catch(SoapFault $e) {
echo "REQUEST HEADER:\n" . $client->__getLastRequestHeaders() . "\n";
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
echo "RESPONSE HEADER:\n" . $client->__getLastResponseHeaders() . "\n";
echo "RESPONSE:\n" . $client->__getLastResponse() . "\n";
print_r($e);
}
}
}
$oSap = new SapTest();
$oSap->execute();
ma sortie xml semble comme suit:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:sap-com:document:sap:soap:functions:mc-style">
<SOAP-ENV:Body>
<ns1:_-bic_-nf2>
<ETColumnDescription/>
<ETGridData/>
<ETMessageLog/>
<ETRowDescription/>
<ISVar_01xwerbet>
<Sign>I</Sign>
<Option>LE</Option>
<Low>3</Low>
<High/>
</ISVar_01xwerbet>
</ns1:_-bic_-nf2>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
le xml attendu devrait ressembler comme suit:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
<soapenv:Body>
<urn:_-bic_-nf2>
<ETColumnDescription/>
<ETGridData/>
<ETMessageLog/>
<ETRowDescription/>
<ISVar_01xwerbet>
<Sign>I</Sign>
<Option>LE</Option>
<Low>3</Low>
<High/>
</ISVar_01xwerbet>
</urn:_-bic_-nf2>
</soapenv:Body>
</soapenv:Envelope>
Je ne sais pas si elle est la balise d'en-tête vide manquante, que je ne peux pas sembler pouvoir ajouter avec PHP de base (je peux ajouter un en-tête, mais ajouter un en-tête vide semble être la partie la plus difficile). Ou si ce sont les différents préfixes (ns1/urn ou soapenv/SOAP-ENV) mais je commence à devenir fou sur ce point. L'aide serait très appréciée.
Merci d'avance!
Merci pour votre réponse, est-il un moyen de faire un en-tête SOAP vide? –
mise à jour de réponse. –
Je reçois une erreur fatale :-(merci bien, en essayant autre chose –