PHP-使用标头调用SoapClient,并返回致命错误

PHP-使用标头调用SoapClient,并返回致命错误,php,soap,wsdl,soapheader,Php,Soap,Wsdl,Soapheader,我对使用php调用SoapClient仍然很陌生。最近我有一个项目,我需要使用web服务SOAP从.net调用API 我无法看到提供的web服务URL的实际XML代码,因为它需要标头才能访问,因此通过POSTMAN进行测试,效果很好 但是,当使用php在localhost服务器(XAMPP)上调用其web服务(其他web服务地址在下面的代码中可以正常工作)时,它不起作用,不确定哪里出错: $Auth = array( 'Content-Type' => 'text/xml',

我对使用php调用SoapClient仍然很陌生。最近我有一个项目,我需要使用web服务SOAP从.net调用API

我无法看到提供的web服务URL的实际XML代码,因为它需要标头才能访问,因此通过POSTMAN进行测试,效果很好

但是,当使用php在localhost服务器(XAMPP)上调用其web服务(其他web服务地址在下面的代码中可以正常工作)时,它不起作用,不确定哪里出错:

  $Auth = array(

    'Content-Type' => 'text/xml',
    'X-RW-Auth-Token' => '4f931e62-d8c8-439b-a4d7-0c29fc0e3dbe'

);

$client = new SoapClient("https://licensed-ws.ricewarnerdigital.com/process/RiskEngine/v1.0/EndPoint.asmx?wsdl");

$header = new SoapHeader(url,null, $Auth,false);

$client->__setSoapHeaders($header);

$param = array(
    'RR_AgeNext' => '30',
    'RR_TermSI' => '1000000',
    'RR_TPDSI' => '3000000',
    'RR_AnyOwn' => 'A'
);

$GetResponse = $client->GetQuotationsForParameters($param);
错误: 致命错误:未捕获的SoapFault异常:[WSDL]SOAP-error:解析WSDL:无法从“…”加载:未能在/Applications/XAMPP/xamppfiles/htdocs/quote-tool/ricewarner_-api.php中加载外部实体“…”:11堆栈跟踪:#0/Applications/XAMPP/xampfiles/htdocs/quote-tool/ricewarner_-api.php(11):SoapClient->SoapClient(“…)#1{main}在第11行的/Applications/XAMPP/xamppfiles/htdocs/quote-tool/ricewarner_-api.php中抛出


我终于让它工作了,最终SoapClient无法与包含许可层的web服务一起工作,所以我必须使用CURl来调用它。代码如下:

类GetPremiumData{

        public function doXMLCurl($url,$postXML){

        $CURL = curl_init();

        curl_setopt($CURL, CURLOPT_URL, $url); 
        curl_setopt($CURL, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
        curl_setopt($CURL, CURLOPT_POST, 1); 
        curl_setopt($CURL, CURLOPT_POSTFIELDS, $postXML); 
        curl_setopt($CURL, CURLOPT_HEADER, false); 
        curl_setopt($CURL, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($CURL, CURLOPT_HTTPHEADER, array('Content-Type: text/xml','X-RW-Auth-Token: apiToken'));
        curl_setopt($CURL, CURLOPT_RETURNTRANSFER, true);

        $xmlResponse = curl_exec($CURL);

        return $xmlResponse;
    }

}

请发布你的WSDL的相关部分。我无法访问你代码中的URL。这是API公司提供的唯一URL,支持人员说它必须发送标题信息才能访问…如果你使用postman,提供标题,它会工作,但不会在php上。ThanxMy首先猜测你的SOAP信封有一个pro问题。这就是我要求提供WSDL的原因。SOAP信封本身没有问题,因为它在其响应的邮递员身上进行了测试。它与需要与信封关联的标题X-RW-Auth-Token和内容类型有关。请发布请求。但不确定代码为什么不起作用……请发布您的
标记。恐怕没有这一点,我们帮不了你。