Page 1 sur 1

SoapFault exception: [HTTP] Bad Request

Posté : 01 déc. 2015, 13:16
par darkprototype
Bonjour,
J'ai un problème lors d'un appel d'un wsdl https via un certificat, des que j'appel une fonction avec c'est paramètre j'ai une erreur SoapFault exception: [HTTP] Bad Request je ne sais pas d'ou cela provient.
J'ai effectué un test sous SoapUi cela fonctionne correctement.
Pouvez-vous m'aider s'il vous plait?

exemple du code :
$wsdl                 = "https://xxxx/xxxx.svc?wsdl";
	$certificat           =  'xxxx.pem';
$soapClient = new SoapClient($wsdl  , array( 'trace'=> true, 'soap_version'=> SOAP_1_2, 'exceptions' => 1,'local_cert' => $certificat));

try {	


	/*var_dump($soapClient->__getFunctions());
	var_dump($soapClient->__getTypes());*/
	$param = array("request"=>array("id" => "personne"));
								
		
   $result = $soapClient->__soapCall('reponse',array($params) );
	
  
} 



catch( Exception $Ex )
{
   	echo "Exception SOAP:<br>";

	var_dump( $Ex );
print $Ex;

}

Re: SoapFault exception: [HTTP] Bad Request

Posté : 01 déc. 2015, 14:55
par @rthur
Bonjour,
[HTTP] Bad Request
Cela veut dire que le serveur distant te renvoie une erreur 400 car il ne comprend pas ta demande.

Impossible pour nous sans connaitre le serveur distant ni sa doc de te dire pourquoi il te répond cela...
Vérifie que les paramètres passés soient corrects, si c'est le cas, contacte l'administrateur du serveur distant pour connaitre l'origine du problème

Re: SoapFault exception: [HTTP] Bad Request

Posté : 01 déc. 2015, 17:15
par darkprototype
Merci de ta réponse, j'ai pu un peu avancer le problème vient de la configuration que j'ai effectué sous soapUi que je n'arrives pas a faire sous soapclient.
Voici le bloc qui doit être configurer sous soapclient
con:outgoing>

<con:name>Comparator</con:name>

<con:username>xxxxxxx</con:username>


-<con:entry type="Signature" password="xxxxx" username="xxxxxxxx">


-<con:configuration>

<crypto>resul.pfx</crypto>

<keyIdentifierType>1</keyIdentifierType>

<signatureAlgorithm>http://www.w3.org/2000/09/xmldsig#rsa-sha1</signatureAlgorithm>

<signatureCanonicalization>http://www.w3.org/2001/10/xml-exc-c14n#</signatureCanonicalization>

<useSingleCert>true</useSingleCert>

<digestAlgorithm>http://www.w3.org/2000/09/xmldsig#sha1</digestAlgorithm>

<customTokenValueType/>

<customTokenId/>


-<signaturePart>

<![CDATA[<xml-fragment xmlns:con="http://eviware.com/soapui/config"> <con:entry key="id" value=""/> <con:entry key="name" value="To"/> <con:entry key="enc" value="Element"/> <con:entry key="namespace" value="http://www.w3.org/2005/08/addressing"/> </xml-fragment>]]>

</signaturePart>

</con:configuration>

</con:entry>


-<con:entry type="Timestamp">


-<con:configuration>

<timeToLive>600</timeToLive>

<strictTimestamp>true</strictTimestamp>

</con:configuration>

</con:entry>

</con:outgoing>
Pour simplifié, le certificat doit être appele au moment ou on appel une fonction du wsdl hors avec la configuration actuelle via local_cert cela ne fonctionne pas.Sous soapUi cela fonctionne car on configure le outgoing wss qui appelle bien le certificat au moment de l'appel de la fonction avec ces valeur