Amazon AWS SQS WSDL (https://sqs.us-east-1.amazonaws.com/doc/2009-02-01/QueueService.wsdl)은 서비스의 HTTP 및 HTTPS 주소를 지정하는 "주소"가 다른 여러 "포트"(파일의 맨 아래)를 나열합니다. PHP는 SOAP 객체 사용PHP의 SOAP WSDL에서 다른 포트를 선택하는 방법은 무엇입니까?
: ": AWS : ERROR를 Client.RequiresSSL SSL 연결은 이전 버전과 호환 SOAP 인증이 필요합니다."그 코드를 실행
$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";
}
준다; 첫 번째 "포트"(HTTP 하나)를 사용하여 AWS 서비스에 연결합니다. 이러한 종류의 인증에는 허용되지 않습니다.
__soapCall
앞에 $sc->__setLocation('https://queue.amazonaws.com');
(URL 복사 및 붙여 넣기 된 URL) 행을 추가하면 올바르게 작동하지만 SoapClient 객체가 WSDL에서 다른 포트를 사용하도록 지시 할 수 있습니까? HTTPS URL을 변경하는 경우를 대비하여 정적 문자열로 사용 하시겠습니까?