无法为我的生活获取此SOAP客户端的工作。在我的朋友框中正常工作,并且我比较了php.ini,并且看不到与SOAP设置有关的任何内容。我正在运行最新的PHP和UBuntu 12.10。PHP SOAP客户端。 HTTPS无法连接
这里是我的代码:
$url = "https://m2mconnect.orange.co.uk/orange-soap/services/MessageServiceByCountry?wsdl";
$options["connection_timeout"] = 1000;
$options["location"] = $url;
$options['trace'] = 1;
try {
$client = new SoapClient("orange.xml",$options);
print_r($client->__getFunctions());
$client->peekMessages(
'user',
'pass',
10
);
var_dump($client);
} catch (Exception $e) {
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
echo "REQUEST HEADERS:\n" . $client->__getLastRequestHeaders() . "\n";
echo "RESPONSE HEADERS:\n" . $client->__getLastResponseHeaders() . "\n";
echo "Response:\n" . $client->__getLastResponse() . "\n";
echo "Exception: \n" . $e->getMessage() . "\n";
echo "Trace: \n" . $e->getTraceAsString() . "\n";
}
我不得不把WSDL保存为一个文件,否则我收到一个不同的错误!
下面是代码运行:
Array
(
[0] => int sendMessage(string $username, string $password, string $deviceMSISDN, string $message, boolean $deliveryReport, string $mtBearer)
[1] => ArrayOf_xsd_string getDeliveryReports(string $username, string $password, string $deviceMSISDN, string $countryCode)
[2] => ArrayOf_xsd_string readMessages(string $username, string $password, int $count, string $deviceMsisdn, string $countryCode)
[3] => boolean flushMessages(string $username, string $password, string $deviceMSISDN, string $countryCode)
[4] => ArrayOf_xsd_string waitForMessage(string $username, string $password, int $timeout, string $deviceMSISDN, int $msgref, string $countryCode)
[5] => int sendMessageWithValidityPeriod(string $username, string $password, string $deviceMSISDN, string $message, boolean $deliveryReport, string $mtBearer, string $binarySmsDcs, string $validityDaysHoursMins)
[6] => int sendBinarySmsMessage(string $username, string $password, string $deviceMSISDN, string $message, boolean $deliveryReport, string $mtBearer, string $binarySmsDcs)
[7] => ArrayOf_xsd_string sendAndWait(string $username, string $password, int $timeout, string $deviceMSISDN, string $message, boolean $deliveryReport, string $mtBearer)
[8] => ArrayOf_xsd_string sendBinarySmsAndWait(string $username, string $password, int $timeout, string $deviceMSISDN, string $message, boolean $deliveryReport, string $mtBearer, string $binarySmsDcs)
[9] => ArrayOf_xsd_string peekMessages(string $username, string $password, int $count, string $deviceMsisdn, string $countryCode)
[10] => ArrayOf_xsd_string getDeliveryReportsFromDate(string $username, string $password, string $deviceMSISDN, string $countryCode, string $fromDate)
)
REQUEST:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soap.otel.telematics.orange.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:peekMessages><username xsi:type="xsd:string">username</username><password xsi:type="xsd:string">password</password><count xsi:type="xsd:int">10</count><deviceMsisdn xsi:nil="true"/><countryCode xsi:nil="true"/></ns1:peekMessages></SOAP-ENV:Body></SOAP-ENV:Envelope>
REQUEST HEADERS:
RESPONSE HEADERS:
RESPONSE:
EXCEPTION:
Could not connect to host
Trace:
#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'https://m2mconn...', '', 1, 0)
#1 /var/www/soap-app.com/Zend/public/soap.php(34): SoapClient->__call('peekMessages', Array)
#2 /var/www/soap-app.com/Zend/public/soap.php(34): SoapClient->peekMessages('username', 'password', 10)
#3 {main}
我的用户名&密码是否正确。我相信这与SSL有关。这里是我的SOAP和SSL php.ini设置:
soap
Soap Client enabled
Soap Server enabled
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, tls
curl SSL Yes
openssl
OpenSSL support enabled
OpenSSL Library Version OpenSSL 1.0.1c 10 May 2012
OpenSSL Header Version OpenSSL 1.0.1c 10 May 2012
SSL Version OpenSSL/1.0.1c
任何帮助将是伟大的。把我的头发拉出来!
更多细节:
运行:
echo file_get_contents('https://m2mconnect.orange.co.uk/orange-soap/services/MessageServiceByCountry?wsdl');
结果:
Warning: file_get_contents(): Failed to enable crypto.
编辑:
似乎这些错误门票相关: https://bugs.php.net/bug.php?id=52106
但是我使用最新的PHP版本,我需要为我使用Zend框架2.
(1)是'allow_url_fopen = 1'? (2)你可以'file_get_contents('https://m2mconnect.orange.co.uk/orange-soap/services/MessageServiceByCountry?wsdl');'? – Wrikken
*无法连接到主机* < - 连接问题。检查您的网络设置。并且不要把所有的头发都拉出来;) – hakre
我的网络连接没有问题,因为我可以通过浏览器浏览网站。 allow_url_fopen是1. –