2012-12-13 88 views
0

无法为我的生活获取此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/Message‌​ServiceByCountry?wsdl'); 

结果:

Warning: file_get_contents(): Failed to enable crypto. 

编辑:

似乎这些错误门票相关: https://bugs.php.net/bug.php?id=52106

但是我使用最新的PHP版本,我需要为我使用Zend框架2.

+0

(1)是'allow_url_fopen = 1'? (2)你可以'file_get_contents('https://m2mconnect.orange.co.uk/orange-soap/services/MessageServiceByCountry?wsdl');'? – Wrikken

+0

*无法连接到主机* < - 连接问题。检查您的网络设置。并且不要把所有的头发都拉出来;) – hakre

+0

我的网络连接没有问题,因为我可以通过浏览器浏览网站。 allow_url_fopen是1. –

回答

0

看来这一切都是因为我的网络设置。我正在使用安装了开源固件DD-WRT的路由器来扩展我的无线网络。当我将该路由器从网络中取出时,连接成功。花了一个星期解决这个问题!

0

https://m2mconnect.orange.co.uk/orange-soap/services/MessageServiceByCountry?wsdl

不会出现加载,相同的只有HTTP://

如果你说你可以得到它,那么这不应该是一个问题。但是,如果您需要更多帮助,那么我建议您将其设置为可以访问该URL。然后我们可以给它适当的测试和更好的解决方案。

+0

您可以连接吗?我无法解决此问题 –

+0

显示您的链接仍然无法正常工作。确保你现在没有任何防火墙阻止我们看到它。 – Diemuzi

+0

什么?它适用于我尝试过的大约4种不同的设备。这不是我的服务器。它是橙色的。正如Orange在电信网络中一样! –