2012-07-23 2 views
0

wsdl 모드에서 실행되는 SoapClient는 OS 프록시 제외를 따르지 않으며 직접 추가 할 플래그가없는 것으로 보입니다.SoapClient가 no_proxy 제외를 허용하지 않음

스키마 정의가 내부 및 외부에서 정의 된 스키마를 모두 참조 할 때 어려움이 있습니다. 테스트를 위해 로컬 wsdl 초기 문서를 가져 왔습니다. 스키마 참조 w3.org 및 다른 인터넷 기반 스키마 정의로 프록시를 사용할 수있게했습니다. 문제는 로컬 문서가 여전히 내부 및 외부 프록시에 대한 리소스를 참조하며 일단 프록시를 활성화하면 모든 요청을 그곳으로 보내려고합니다.

$client = new SoapClient('SomeResource.wsdl',array(
    'proxy_host'=>'10.0.0.1', 
    'proxy_port'=>8080, 
    'soap_version'=>SOAP_1_1, 
    'exceptions'=>true, 
    'trace'=>1, 
    'cache_wsdl'=>WSDL_CACHE_NONE, 
    'login'=>'username', 
    'password'=>'password' 
)); 

실행 strace를 :

나는 다음과 같은 코드가 내 클라이언트를 보호하기 위해 이름을 변경 물론이

stat("http://localresource.localdomain.com:1080/some/version/Common.xsd", 0x7fffd94a36d0) = -1 ENOENT (No such file or directory) 
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 7 
fcntl(7, F_GETFL)      = 0x2 (flags O_RDWR) 
fcntl(7, F_SETFL, O_RDWR|O_NONBLOCK) = 0 
connect(7, {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("10.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress) 
... timeout here cause it's a local resource ... 

을,하지만 난 내 NO_PROXY 목록에 localdomain.com을해야합니까 :

somehost:someuser> env |grep proxy 
http_proxy=http://10.0.0.1:8080 
ftp_proxy=http://10.0.0.1:8080 
https_proxy=http://10.0.0.1:8080 
no_proxy=localdomain.com,localhost,127.0.0.1 

no_proxy를 SoapClient 입력에 추가해도 아무 효과가 없습니다.

내부 스키마를 모두 가져오고 해당 참조를 모두 수정하여 로컬 정의 리소스를 가리 키지 않는 경우 SoapClient가 no_proxy 규칙을 따르도록 할 수있는 방법이 있습니까?

답변

0

나는 모든 스키마를 내부로 끌어 들이고 모든 스키마를 수정하여 로컬로 정의 된 스키마를 가리키게했다.

관련 문제