尝试测试通信Web服务时出现以下代码错误:
Fatal error: Uncaught SoapFault exception: [Client] SoapClient::SoapClient(): 'uri' option is required in nonWSDL mode in /home/site/public_html/WebPayService/WebpayService.php:96 Stack trace: #0 /home/site/public_html/WebPayService/WebpayService.php(96): SoapClient->SoapClient(NULL, Array) #1 /home/site/public_html/WebPayService/InitTransaction.php(37): WebpayService->__construct(NULL) #2 {main} thrown in /home/site/public_html/WebPayService/WebpayService.php on line 96
字符串
知道是什么吗
这是我的页面soap.php:
class MySoap extends SoapClient{
function __doRequest($request, $location, $saction, $version){
$doc = new DOMDocument('1.0');
$doc->LoadXML($request);
$objWSSE = new WSEESoap($doc);
$objkey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1,array('type'=>'private'));
$objkey->LoadKey(PRIVATE_KEY, TRUE); //Ruta LLave Privada $objkey->LoadKey(PRIVATE_KEY, TRUE);
$options = array("insertBefore" => TRUE);
$objWSSE->signSoapDoc($objKey, $options);
$objWSSE->addIssuerSerial(CERT_FILE); //Ruta Certificado de Comercio $objWSSE->addIssuerSerial(CERT_FILE);
$objKey = new XMLSecurityKey(XMLSecurityKey::AES256_CBC);
$objKey->generateSessionKey();
$retVal = parent::__doRequest($objWSSE->saveXML(), $location, $saction, $version);
$doc = new DOMDocument();
$doc->loadXML($retVal);
return $doc->saveXML();
}
}
型
1条答案
按热度按时间dgsult0t1#
您提供的错误消息指出,在您的WebpayService.php文件的第96行中,SoapClient示例化存在问题。特别是,它提到在非WSDL模式下需要'uri'选项。
从您的代码片段来看,您似乎是在用MySoap类扩展SoapClient类并覆盖**__doRequest方法。但是,该错误可能与您在WebpayService.php文件中构造SoapClient**示例的方式有关。
这里有一个潜在的解决方案:
1.打开WebpayService.php文件。
2.找到示例化SoapClient的行:
字符串
1.请确保在$options数组中提供'uri'选项,如错误所示。例如:
型
);
$soapClient = new SoapClient(null,$options);
将“http://example.com/soap-endpoint”替换为SOAP端点的实际URI。
当您在非WSDL模式下使用SoapClient时(即,当您将null作为第一个参数传递给SoapClient构造函数时),需要“uri”选项。
请确保相应地更新代码中SoapClient的示例化。这应该可以解决'uri'选项必需的问题。如果错误仍然存在或您有任何其他详细信息,请随时提供更多信息,以便我可以进一步帮助您。