肥皂验证失败

Soap authentification failed

我习惯于为 SOAP 调用编写 PHP 代码 这是我的代码

<?php
    $client = new SoapClient("http://www.fma.fr/webservices_comparateurs/tarification_sante_comparateurs.asmx?wsdl");
   $param = array('NomUtilisateur' => 'XXXXXX','MotDePasse' => 'XXYYZZ','ContenuDuMessage' => '');
   $values = $client->TariferSante($param);

    var_dump($values);

?>

当我执行脚本时,我收到一条身份验证错误消息:

object(stdClass)#2 (1) { ["TariferSanteResult"]=> string(109) "err_authentification" }

使用的参数是真的,你可以用这个试试link: http://www.fma.fr/webservices_comparateurs/tarification_sante_comparateurs.asmx?op=TariferSante

更新答案: 我尝试了这段代码并且有效

$options = array(
    'uri'=>'http://schemas.xmlsoap.org/soap/envelope/',
    'style'=>SOAP_RPC,
    'use'=>SOAP_ENCODED,
    'soap_version'=>SOAP_1_1,
    'cache_wsdl'=>WSDL_CACHE_NONE,
    'connection_timeout'=>15,
    'trace'=>true,
    'encoding'=>'UTF-8',
    'exceptions'=>true,

);

class TariferSante {

    public $nomUtilisateur;
    public $motDePasse;
    public $contenuDuMessage;
}
$client = new SoapClient("http://www.fma.fr/webservices_comparateurs/tarification_sante_comparateurs.asmx?wsdl",$options);

$param = new TariferSante();
$param->nomUtilisateur = "XXXXXXX";
$param->motDePasse = "XXYYZZ";
$param->contenuDuMessage = "";
$values = $client->TariferSante($param);
echo "Request".htmlspecialchars($client->__getLastRequest());

var_dump($values);

我在使用 Teradata Soap 时遇到了同样的问题,我认为它需要通过 http 进行基本授权 - 我的解决方案是:

  $opts = array();
  $opts['login'] = 'username';
  $opts['password'] = 'secretpassword';
  $opts['trace'] = 1;
  $opts['authentication'] = SOAP_AUTHENTICATION_BASIC;
  $url = "https://example.com/vx?wsdl";
  $client = new SoapClient($url, $opts);

我可以使用它。

在这里查看我的讨论: