我正在尝试从PHP或AJAX中使用SOAP Web服务,它假定我的ws提供程序允许我的VPS IP,因此该Web服务可以从SoapUI使用,但是我需要使用我的数据网页(在VPS中运行),因此我尝试使用以下PHP:
<?php
$wsdl = "https://qws.equifax.cl/osb-efx/equifax/CommercialReportPublicService?wsdl";
$options = array(
'Usuario' => "anUser",
'Clave' => "aPassword",
'Rut' => "someData",
'Dv' => "someMoreData"
);
libxml_disable_entity_loader(false);
$client = new SoapClient($wsdl, $options);
echo '<pre>'.print_r($client,true).'</pre>';
?>
但是会引发此错误:
问题在于,我正试图访问名为“ obtenerReporteFinal”的方法,但我不知道在哪里指定它,这也许是第一个错误。
因此,我搜索了另一种使用SOAP Web服务的方法,并且发现this帖子使用了ajax。由于我的VPS上有一个PHP + JavaScript网页,因此我尝试了以下方法:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input type="button" id="btnQlo" value="Call Web Service" />
<script src="http://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
jQuery.support.cors = true;
$(document).on("click","#btnQlo",function(){CallService()});
});
function CallService()
{
var webServiceURL = 'https://qws.equifax.cl/osb-efx/equifax/CommercialReportPublicService?wsdl';
var soapMessage = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://commercialreport.datos.wsecrp01.equifax.cl/">';
soapMessage+='<soapenv:Header/>';
soapMessage+='<soapenv:Body>'
soapMessage+='<com:obtenerReporteFinal>'
soapMessage+='<!--Optional:-->'
soapMessage+='<arg0>'
soapMessage+='<Usuario>anUser</Usuario>'
soapMessage+='<Clave>aPassword</Clave>'
soapMessage+='<Rut>someData</Rut>'
soapMessage+='<Dv>someMoreData</Dv>'
soapMessage+='</arg0>'
soapMessage+='</com:obtenerReporteFinal>'
soapMessage+='</soapenv:Body>'
soapMessage+='</soapenv:Envelope>';
$.ajax({
url: webServiceURL,
type: "POST",
crossDomain : true,
dataType: "xml",
data: soapMessage,
processData: false,
contentType: "text/xml; charset=\"utf-8\"",
success: function(data){
console.log(data);
}
});
}
</script>
</body>
</html>
我不知道我现在是否正在正确调用“ obtenerReporteFinal”方法,但是当我按下按钮调用该服务时,它只会引发以下错误:
如果“ http://localhost”被阻止,我的网络服务提供商将如何允许我使用它?
那么,在上述任何一种情况下,我该如何进行这项工作?我真的很困惑,因为这是我第一次必须使用SOAP Web服务。
编辑:我应该在VPS中实现SSL吗?