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 규칙을 따르도록 할 수있는 방법이 있습니까?