[英]SOAP-ERROR on Live server
Good day all, 大家好
I have a problem I have code a soap client that checks if a user have a valid TV license when they purchase a set of TV in my website, 我有一个问题,我编写了一个肥皂客户端程序,该程序可以检查用户在我的网站上购买电视时是否拥有有效的电视许可证,
The program works fine on local host with no errors and it returns the results, When moved to the live server, it gives the following error: 该程序在本地主机上运行正常,没有错误,并且返回了结果。当移至实时服务器时,它会出现以下错误:
Error!"SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://secure4.tvlic.co.za/AccountEnquiryService_Test_1.0/AccountEnquiryService.svc?wsdl' : failed to load external entity \\"https://secure4.tvlic.co.za/AccountEnquiryService_Test_1.0/AccountEnquiryService.svc?wsdl\\"\\n"
错误!“ SOAP-ERROR:解析WSDL:无法从'https://secure4.tvlic.co.za/AccountEnquiryService_Test_1.0/AccountEnquiryService.svc?wsdl'加载:无法加载外部实体\\” https:// secure4.tvlic.co.za/AccountEnquiryService_Test_1.0/AccountEnquiryService.svc?wsdl\\"\\n“
My code : 我的代码:
<?php
$wdsl = "https://secure4.tvlic.co.za/AccountEnquiryService_Test_1.0/AccountEnquiryService.svc?wsdl";
$opts = array(
'http' => array(
'user_agent' => 'PHPSoapClient'
)
);
$context = stream_context_create($opts);
$soapClientOptions = array(
'stream_context' => $context,
'cache_wsdl' => WSDL_CACHE_NONE
);
//Generate GUID
function getGUID()
{
if (function_exists('com_create_guid')) {
return com_create_guid();
} else {
mt_srand((double) microtime() * 10000);
$charid = strtoupper(md5(uniqid(rand(), true)));
$hyphen = chr(45); // "-"
$uuid = chr(123) // "{"
. substr($charid, 0, 8) . $hyphen . substr($charid, 8, 4) . $hyphen . substr($charid, 12, 4) . $hyphen . substr($charid, 16, 4) . $hyphen . substr($charid, 20, 12) . chr(125); // "}"
return trim($uuid, '{}');
}
}
$quid = getGUID();
$licencetype = isset($_POST['licencetype']) ? $_POST['licencetype'] : NULL;
switch ($licencetype) {
case 'domestic':
$holder_id = isset($_POST['holder_id']) ? $_POST['holder_id'] : NULL;
try {
$client = new SoapClient($wdsl, $soapClientOptions);
$client->__setLocation('https://secure4.tvlic.co.za/AccountEnquiryService_1.0/AccountEnquiryService.svc');
$arrParams = array(
'request' => array(
'Header' => array(
'Rquid' => $quid,
'ApiKey' => '2c261e98-90ca-4f7d-90a0-1f5e91ebf416'
),
'AccountIdentifier' => $holder_id,
'AccountIdentifierType' => 'SaidNumber'
)
);
$account = $client->GetAccount($arrParams);
echo json_encode($account);
}
catch (\Exception $e) {
echo "Error!";
echo json_encode($e->getMessage());
echo 'Last response: ' . $client->__getLastResponse();
}
break;
case 'business':
$tvlicencenumber = isset($_POST['tvlicence']) ? $_POST['tvlicence'] : NULL;
try {
$client = new SoapClient($wdsl, $soapClientOptions);
$client->__setLocation('https://secure4.tvlic.co.za/AccountEnquiryService_1.0/AccountEnquiryService.svc');
$arrParams = array(
'request' => array(
'Header' => array(
'Rquid' => $quid,
'ApiKey' => '5957237e-101c-4ff2-8fdc-4bd6c9393a1d'
),
'AccountIdentifier' => $tvlicencenumber,
'AccountIdentifierType' => 'AccountNumber'
)
);
$account = $client->GetAccount($arrParams);
echo json_encode($account);
}
catch (\Exception $e) {
echo "Error!";
echo json_encode($e->getMessage());
echo 'Last response: ' . $client->__getLastResponse();
}
break;
case 'dealer':
$tvlicencenumber = isset($_POST['tvlicence']) ? $_POST['tvlicence'] : NULL;
try {
$client = new SoapClient($wdsl, $soapClientOptions);
$client->__setLocation('https://secure4.tvlic.co.za/AccountEnquiryService_1.0/AccountEnquiryService.svc');
$arrParams = array(
'request' => array(
'Header' => array(
'Rquid' => $quid,
'ApiKey' => '5957237e-101c-4ff2-8fdc-4bd6c9393a1d'
),
'AccountIdentifier' => $tvlicencenumber,
'AccountIdentifierType' => 'AccountNumber'
)
);
$account = $client->GetAccount($arrParams);
echo json_encode($account);
}
catch (\Exception $e) {
echo "Error!";
echo json_encode($e->getMessage());
echo 'Last response: ' . $client->__getLastResponse();
}
break;
default:
echo json_encode('Please select licence type');
}
?>
Xampp uses : Xampp使用:
php 5.6 的PHP 5.6
Live server 实时服务器
PHP/5.6.33-0+deb8u1 PHP / 5.6.33-0 + deb8u1
Please help solve this error 请帮助解决此错误
Are you sure that https://secure4.tvlic.co.za/AccountEnquiryService_1.0/AccountEnquiryService.svc
is the right location for SOAP client? 您确定
https://secure4.tvlic.co.za/AccountEnquiryService_1.0/AccountEnquiryService.svc
是SOAP客户端的正确位置吗? When I open it in a browser, it shows an error - Metadata publishing for this service is currently disabled. 当我在浏览器中打开它时,它显示错误- 该服务的元数据发布当前被禁用。 Even if that's because I don't initialize the SOAP client to open it, you still seem to mix test and live APIs, judging from your WSDL (BTW you named the wsdl variable $wdsl, I guess typo, but you use it consistently so that shouldn't be an issue) and SOAP addresses.
即使那是因为我没有初始化SOAP客户端来打开它,您仍然似乎混合使用了测试API和实时API,从您的WSDL来看(顺便说一句,您将wsdl变量命名为$ wdsl,我猜是错字,但您一直使用它,因此(这不应该成为问题)和SOAP地址。
Compare: 相比:
↓ SOAP address (not working, even with ?wsdl appended) https://secure4.tvlic.co.za/AccountEnquiryService_1.0/AccountEnquiryService.svc https://secure4.tvlic.co.za/AccountEnquiryService_Test_1.0/AccountEnquiryService.svc?wsdl ↑ WSDL address (working)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.