2016-06-29 13 views
0

Wenn mit Proxy-Optionen, um die Soapclient Klasse zu initialisieren, sind Proxy korrekt die WSDL und seine Methoden zugegriffen über:PHP SoapClient mit Proxy: Wie Schema über Proxy zugreifen?

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

Schemen (schema) sind jedoch nicht über den angegebenen Proxy zugegriffen zu werden:

<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> 

Dies führt zu:

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

Also im Grunde die Soapclient die zuzugreifen versucht, cis_base.xsd und is_base_de.xsd ohne Proxy, der fehlschlägt.

Gibt es einen Grund, warum der PHP SoapClient sich so verhält und gibt es einen Workaround?

Antwort

0

In meinem Code verwende ich diese Optionen und das funktioniert gut mit unserem Proxy und HTTPS-Protokoll. Ich hoffe das klappt für dich :)

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

Grüße.

+0

Danke, aber wir haben keine Probleme mit https. Unser Problem ist, dass auf das WSDL-Schema ohne Proxy zugegriffen wird. – sleepless

0

Versuchen:

$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, 
      ) 
     ), 
    ) 
); 

Sie möchten vielleicht andere mögliche Parameter in PHP documentation überprüfen.