2016-06-29 1 views
0

에서, WSDL과 방법을 통해 액세스 프록시 :프록시가있는 PHP SoapClient : 프록시를 통해 스키마에 액세스하는 방법? 제대로 프록시 옵션으로 SoapClient 클래스를 초기화 할 때

$client = new SoapClient(
    WSDL_URL, 
    array(
     'proxy_host'  => PROXY_HOST, 
     'proxy_port'  => PROXY_PORT 
    ) 
); 

스키마 (의 schemaLocation) 그러나 지정된 프록시를 통해 액세스되지 않아요 :

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified"> 
    <xs:import namespace="http://example.com/webservice/cisbase" schemaLocation="http://example.com/ws/cis_base.xsd"/> 
    <xs:import namespace="http://de.ws.example" schemaLocation="http://example.com/ws/is_base_de.xsd"/> 
</xs:schema> 

SOAP-ERROR: Parsing Schema: can't import schema from ...

그래서 기본적으로 SoapClient가 에 액세스하려고 :

이에 리드is_base_de.xsd 프록시가 작동하지 않습니다.

PHP SoapClient가 이와 같이 작동하고 해결 방법이있는 이유가 있습니까?

답변

0

내 코드에서 나는 이러한 옵션을 사용하며 프록시와 https 프로토콜에서 잘 작동합니다. 나는 당신을 위해 일할 수 있기를 바랍니다 :

 'proxy_host' => PROXY_HOST, 
     'proxy_port' => PROXY_PORT, 
     'stream_context' => stream_context_create(
      array(
       'ssl' => array(
        'verify_peer'  => false, 
        'verify_peer_name' => false, 
       ) 
      ) 
     ) 

감사합니다.

+0

감사합니다.하지만 https에는 문제가 없습니다. 우리의 문제는 프록시없이 WSDL 스키마에 액세스한다는 것입니다. – sleepless

0

시도 :

$client = new SoapClient(
    WSDL_URL, 
    array(
     'proxy_host'  => PROXY_HOST, 
     'proxy_port'  => PROXY_PORT, 
     'stream_context' => stream_context_create(
      array(
       'proxy' => "tcp://$PROXY_HOST:$PROXY_PORT", 
       'request_fulluri' => true, 
      ) 
     ), 
    ) 
); 

당신은 PHP documentation에 다른 가능한 매개 변수를 확인 할 수 있습니다.