나는이 주제와 관련된 질문을 이미 물었지만 실제로 도움이되지는 못했다. 이제 SOAP에 대해 조금 더 알고 더 자세한 정보를 제공 할 수 있습니다. 여러분의 누군가가 왜 제대로 작동하지 않는지에 대한 좋은 아이디어가 있기를 바랍니다.Proxys를 통한 PHP 비누
- extern Web Service에 액세스하기 위해 PHP에서 SoapClient를 약간 설정하려고합니다.
- 이 SoapClient는 지역 대학에서 프록시를 사용해야합니다.
- extern WSDL 파일은 IP-Check를 통해 보호됩니다.
이은 내가 아는 것입니다 :
$ExternWSDLFile = "http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl";
$LocalUniversityProxy = "proxy.krz.uni-heidelberg.de:8080";
난 항상 사용자/암호를 통해 WSDL에 액세스하려고하고 나는 그들이 나에게 말했다 오랜 시간 동안 작동하지 않았다 후, 그 사용자/암호입니다 필요하지 않으며 WSDL 인증은 IP-Check를 통해서만 수행됩니다. 그래서 나는 전에 생각하고 시도한 것처럼 더 이상 SoapClient에게 사용자/암호 조합을 제공 할 필요가 없습니다. 외부 (extern) 개인 PC에서 같은 코드의 실행은, 적어도 어떤 오류를 포기하지 반면,
이$wsdl = "http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl";
$Client = new SoapClient($wsdl,array('trace' => 1, 'exception' => 0, 'cache_wsdl' => 0));
$Authentification = $Client->authenticate();
var_dump($Client);
var_dump($Authentification);
여전히 작동하지 않았다
이
내가 등록 된 IP-ADRESS와 대학의 컴퓨터에서 먼저 시도 무엇인가 메시지이지만 완전히 초기화 된 Soap-Object. 이 코드는 University-PC에서만 다음과 같은 오류 메시지를 생성했습니다.Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl' : failed to load external entity "http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl" in E:\xampp\htdocs\test.php:17 Stack trace: #0 E:\xampp\htdocs\test.php(17): SoapClient->SoapClient('http://search.w...', Array) #1 {main} thrown in E:\xampp\htdocs\test.php on line 17
따라서 University-Proxy 때문에이 오류가 발생했습니다.
다음은 WSDL 파일을 로컬에서 가져 오려고했는데, 그 이유는 Google에서 종종 힌트를 얻었 기 때문입니다.
$auth = base64_encode('KHD\user:pass');
$header = array("Authorization: Basic $auth");
$Proxy = 'proxy.krz.uni-heidelberg.de:8080';
$Context = stream_context_create(array('http' => array('proxy' => $Proxy,'request_fulluri' => True,'header' => $header,),));
$wsdl = file_get_contents("http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl",false,$Context);
$ wsdl에서 print_r()을 사용하면 올바른 로컬 캐시 된 WSDL 파일을 제공합니다. 그러나 지금 $의 WSDL과 SoapClient를 설정는 메시지와 함께 다시 파산 :
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from '<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="WOKMWSAuthenticateService" targetNamespace="http://auth.cxf.wokmws.thomsonreuters.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://auth.cxf.wokmws.thomsonreuters.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://auth.cxf.wokmws.thomsonreuters.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://auth.cxf.wokmws.thomsonreuters.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xs:element name="authenticate" type="tns:authenticate" /> <xs:element name="authenticateResponse" type="tns:authenticateResponse" /> <xs:element name="closeSession" type="tns:closeSession" /> <xs:ele in E:\xampp\htdocs\test.php on line 12
나는이 작동하지 않는 이유를 전혀 단서가 없다. 나는 매뉴얼을 완전히 따라 갔고 많은 것을 시도했다. 프록시는 내 작업을 계속 파괴하며 개인/외부 PC에서는 IP가 일치하지 않으므로이 스크립트를 사용할 수 없습니다.
마지막으로 실행하려면 어떻게해야합니까?
도움 주셔서 감사합니다.