Nasıl PHP SOAP WSDL farklı limanları arasında seçim?

0 Cevap php

Amazon AWS OKS WSDL hizmeti için HTTP ve HTTPS adreslerini belirtmek (dosyanın alt kısmında) farklı "adresleri" ile listeleri birden "limanlar" (https://sqs.us-east-1.amazonaws.com/doc/2009-02-01/QueueService.wsdl at).

PHP SOAP nesnesini kullanarak:

$aws_ns = 'http://security.amazonaws.com/doc/2007-01-01/';
$sc = new SoapClient('https://sqs.us-east-1.amazonaws.com/doc/2009-02-01/QueueService.wsdl');
$sc->__setSoapHeaders(new SoapHeader($aws_ns, 'AWSAccessKeyId', 'MyAccessKey'));
$action = "ListQueues";
$ts = date('c');
$hash = base64_encode(hash_hmac('sha1', $action.$ts, 'MyPrivateKey', true));
try {
  $rs = $sc->__soapCall($action, array(), NULL, array(
    new SoapHeader($aws_ns, 'Signature', $hash),
    new SoapHeader($aws_ns, 'Timestamp', $ts)
  ));
} catch (SoapFault $f) {
  echo "ERROR: ".$f->faultcode."-".$f->faultstring."\n";
}

Bu kod çalıştıran "HATA: aws: geriye dönük uyumlu SOAP kimlik doğrulama için gerekli Client.RequiresSSL-SSL bağlantısı." Verir; Bu kimlik doğrulama bu tür izin verilmiyor AWS hizmeti irtibata ilk "port" (HTTP bir) kullanıyor.

__soapCall, gayet iyi çalışır, ama nasıl SoapClient nesne, diğer bağlantı noktasını kullanmak için söyleyebilirim önce ben bir $sc->__setLocation('https://queue.amazonaws.com'); (URL WSDL dosyasından kopyalanan ve yapıştırılan) satırı eklerseniz WSDL, oldukça statik bir dize olarak vermekten daha, durumda onlar yolda HTTPS URL'sini değiştirmek?

0 Cevap