0

このSOAPクライアントを機能させることはできません。My friends box で正常に動作し、php.ini を比較しましたが、SOAP 設定に関連するものは何も表示されません。最新のPHPとUBuntu 12.10を実行しています。

これが私のコードです:

$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 Framework 2 を使用しているため必要があります。

4

2 に答える 2

0

これはすべて、私のネットワーク設定が原因だったようです。ワイヤレス ネットワークを拡張するために、オープン ソース ファームウェア DD-WRT がインストールされたルーターを使用していました。そのルーターをネットワークから外すと、接続は成功します。これを解決するのに1週間かかりました!

于 2012-12-18T20:17:57.030 に答える
0

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

http:// と同じように、ロードされていないようです

あなたがそれを手に入れることができると言うなら、これは問題ではないはずです. ただし、さらにサポートが必要な場合は、URL にアクセスできるようにすることをお勧めします。その後、適切なテストとより良い解決策を提供できます。

于 2012-12-13T21:14:00.597 に答える