【问题标题】:how can i overcome this fatal error when i was run this SOAP API?当我运行这个 SOAP API 时,如何克服这个致命错误?
【发布时间】:2020-07-22 07:36:30
【问题描述】:

我在 Bluehost 主机中使用了短信 API。当我运行它显示的代码时

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://smeapps.mobitel.lk:8585/EnterpriseSMSV3/EnterpriseSMSWS?wsdl' : failed to load external entity "http://smeapps.mobitel.lk:8585/EnterpriseSMSV3/EnterpriseSMSWS?wsdl" in /storage/ssd4/825/11729825/public_html/sms/sms_backend.php:58 Stack trace: #0 /storage/ssd4/825/11729825/public_html/sms/sms_backend.php(58): SoapClient->SoapClient('http://smeapps....') #1 /storage/ssd4/825/11729825/public_html/sms/sms_backend.php(101): getClient() #2 /storage/ssd4/825/11729825/public_html/sms/sms_backend.php(27): createSession('', 'esyyyyy', 'xxxx', '') #3 {main} thrown in /storage/ssd4/825/11729825/public_html/sms/sms_backend.php on line 58

这是我的代码

<?php



$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
//$alias = $_REQUEST['alias'];
$message = $_REQUEST['message'];
$number = $_REQUEST['numbers'];





$session=createSession('',$username,$password,'');
sendMessages($session,'XXXX',$message,$number,0); // 1 for promotional messages, 0 for normal message 
closeSession($session);


$session=createSession('',$username,$password,'');
getMessagesFromShortCode($session,"shortcode");
getMessagesFromLongNumber($session,"longnum");
closeSession($session);





//create soap client
function getClient()
{





ini_set("soap.wsdl_cache_enabled", "0");
    $client = new SoapClient("http://smeapps.mobitel.lk:8585/EnterpriseSMSV3/EnterpriseSMSWS?wsdl");

    return $client;
    
    

}


//serviceTest
function serviceTest($id,$username,$password,$customer)
{

    $client = getClient();

    $user = new stdClass();
    $user->id = '';
    $user->username = $username;
    $user->password = $password;
    $user->customer = '';

    $serviceTest = new stdClass();
    $serviceTest->arg0 = $user;

    return $client->serviceTest($serviceTest);

}

//create session
function createSession($id,$username,$password,$customer)
{

    $client = getClient();

    $user = new stdClass();
    $user->id = $id;
    $user->username = $username;
    $user->password = $password;
    $user->customer = $customer;

    $createSession = new stdClass();
    $createSession->user = $user;

    $createSessionResponse = new stdClass();
    $createSessionResponse = $client->createSession($createSession);

    return $createSessionResponse->return;

}

//check if session is valid
function isSession($session)
{

    $client = getClient();

    $isSession = new stdClass();
    $isSession->session = $session;

    $isSessionResponse = new stdClass();
    $isSessionResponse = $client->isSession($isSession);

    return $isSessionResponse->return;
}

//send SMS to recipients
function sendMessages($session,$alias,$message,$recipients,$messageType)
{
    $client=getClient();

    $smsMessage= new stdClass();
    $smsMessage->message=$message;
    $smsMessage->messageId="";
    $smsMessage->recipients=$recipients;
    $smsMessage->retries="";
    $smsMessage->sender=$alias;
    $smsMessage->messageType=$messageType;
    $smsMessage->sequenceNum="";
    $smsMessage->status="";
    $smsMessage->time="";
    $smsMessage->type="";
    $smsMessage->user="";

    $sendMessages = new stdClass();
    $sendMessages->session = $session;
    $sendMessages->smsMessage = $smsMessage;

    $sendMessagesResponse = new stdClass();
    $sendMessagesResponse = $client->sendMessages($sendMessages);

    return $sendMessagesResponse->return;
}

//send Unicoded SMS to recipients
function sendMessagesMultiLang($session,$alias,$message,$recipients,$messageType)
{
    $client=getClient();

    $smsMessageMultiLang = new stdClass();
    $smsMessageMultiLang->message=$message;
    $smsMessageMultiLang->messageId="";
    $smsMessageMultiLang->recipients=$recipients;
    $smsMessageMultiLang->retries="";
    $smsMessageMultiLang->sender=$alias;

    $smsMessageMultiLang->messageType=$messageType;
    $smsMessageMultiLang->sequenceNum="";
    $smsMessageMultiLang->status="";
    $smsMessageMultiLang->time="";
    $smsMessageMultiLang->type="";
    $smsMessageMultiLang->user="";

    $sendMessagesMultiLang = new stdClass();
    $sendMessagesMultiLang->session = $session;
    $sendMessagesMultiLang->smsMessageMultiLang = $smsMessageMultiLang;

    $sendMessagesMultiLangResponse = new stdClass();
    $sendMessagesMultiLangResponse = $client->sendMessagesMultiLang($sendMessagesMultiLang);

    return $sendMessagesMultiLangResponse->return;
}

//send Campaign SMS to recipients
function sendCampaignMessages($session,$alias,$message,$recipients,$datetime,$multilanguage,$messageType)
{
    $client=getClient();

    $smsCampaignMessage = new stdClass();
    $smsCampaignMessage->message = $message;
    $smsCampaignMessage->messageId = "";
    $smsCampaignMessage->recipients = $recipients;
    $smsCampaignMessage->retries = "";
    $smsCampaignMessage->sender = $alias;
    $smsCampaignMessage->messageType=$messageType;
    $smsCampaignMessage->sequenceNum = "";
    $smsCampaignMessage->status = "";
    $smsCampaignMessage->time = $datetime;
    $smsCampaignMessage->type = "";
    $smsCampaignMessage->user = "";
    $smsCampaignMessage->esmClass = $multilanguage;
    
    $sendCampaignMessages=new stdClass();
    $sendCampaignMessages->session=$session;
    $sendCampaignMessages->smsCampaignMessage=$smsCampaignMessage;
    

    $sendCampaignMessagesResponse = new stdClass();
    $sendCampaignMessagesResponse = $client->sendCampaignMessages($sendCampaignMessages);

    return $sendCampaignMessagesResponse->return;
}

//renew session 
function renewSession($session)
{

    $client = getClient();

    $renewSession = new stdClass();
    $renewSession->session = $session;

    $renewSessionResponse = new stdClass();
    $renewSessionResponse = $client->renewSession($renewSession);

    return $renewSessionResponse->return;

}


//close session
function closeSession($session)
{

    $client = getClient();

    $closeSession = new stdClass();
    $closeSession->session = $session;

    $client->closeSession($closeSession);

}

//retrieve messages from shortcode
function getMessagesFromShortCode($session,$shortCode)
{

    $client = getClient();

    $getMessagesFromShortCode = new stdClass();
    $getMessagesFromShortCode->session = $session;
    $getMessagesFromShortCode->shortcode = $shortCode;

    $getMessagesFromShortcodeResponse = new stdClass();
    $getMessagesFromShortcodeResponse->return = "";
    $getMessagesFromShortcodeResponse = $client->getMessagesFromShortcode($getMessagesFromShortCode);
    
    if(property_exists($getMessagesFromShortcodeResponse,'return'))
    return $getMessagesFromShortcodeResponse->return;
    
    else return NULL;

}

//retrieve delivery report
function getDeliveryReports($session,$alias)
{

    $client = getClient();

    $getDeliveryReports = new stdClass();
    $getDeliveryReports->session = $session;
    $getDeliveryReports->alias = $alias;

    $getDeliveryReportsResponse = new stdClass();
    $getDeliveryReportsResponse->return = "";
    $getDeliveryReportsResponse = $client->getDeliveryReports($getDeliveryReports);
    
    if(property_exists($getDeliveryReportsResponse,'return'))
    return $getDeliveryReportsResponse->return;
    
    else return NULL;

}

//retrieve messages from longnumber
function getMessagesFromLongNumber($session,$longNumber)
{

    $client = getClient();

    $getMessagesFromLongNumber = new stdClass();
    $getMessagesFromLongNumber->session = $session;
    $getMessagesFromLongNumber->longNumber=$longNumber;

    $getMessagesFromLongNumberResponse = new stdClass();
    $getmessagesFromLongNumberResponse->return = "";
    $getMessagesFromLongNumberResponse = $client->getMessagesFromLongNumber($getMessagesFromLongNumber);
    
    if(property_exists($getMessagesFromLongNumberResponse,'return'))
    return $getMessagesFromLongNumberResponse->return;
    
    else return NULL;
    
}
 
 ?>

此代码在 Localhost 中运行良好...但在我的主机 (Bluehost) 中显示了类似的致命错误。

谁能帮我解决这个错误??

提前致谢

【问题讨论】:

    标签: php api soap fatal-error


    【解决方案1】:

    事实证明,您需要在您的服务器上启用扩展 php_openssl 才能使其工作。

    您可以在大多数托管服务上自行执行此操作,方法是转到您的 PHP 设置 -> 查找选项 php_openssl.dllphp_openssl 并启用它。

    如果您有权访问您的 php.ini 文件,您可以查找写有 extension=php_openssl.dll 的行,如果它的开头有一个 ;,就像这样 ;extension=php_openssl.dll,请从开头删除 ;所以它显示为extension=php_openssl.dll

    这应该会为你解决。

    【讨论】:

    • 嗨,感谢您的回答。我被删除了;来自 php.ini。但它仍然没有工作....还有其他问题还是需要时间?
    • 请与我分享您是如何做到的以及从哪里做到的。 Bluehosting 还是您的本地主机?
    • allow_url_fopen = On allow_url_include = Off display_errors = Off enable_dl = Off extension=php_openssl.dll file_uploads = On max_execution_time = 30 max_input_time = 60 max_input_vars = 1000 memory_limit = 256M post_max_size = 260M session.gc_maxlifetime = 1440 upload_max_ 256M zlib.output_compression = 关闭
    • 仅将 php.ini 文件添加到您的 bluehosting 是行不通的。这是一个链接,可以按照您的主机进行操作:my.bluehost.com/hosting/help/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 2023-03-04
    • 1970-01-01
    • 2011-09-16
    • 2022-08-15
    • 2021-02-10
    • 1970-01-01
    相关资源
    最近更新 更多