2012-09-10 6 views
5

SOAP PHP에서 포트를 어떻게 선택합니까? TravelPort를 GDS로 사용하여 여행 예약 웹 사이트를 개발 중입니다. 방금 ​​WSDL을 살펴 보았고 PHP로 서버를 호출하기 위해 WSDL을 사용하려고합니다. 나는 그것을 할 수 없다. 나는 서버가 작동한다는 것을 알고 있습니다. 왜냐하면 요청을 만들어서 cURL을 통해 보내면 기대하고있는 응답을 얻게 될 것이기 때문입니다. 그러나 자신의 메시지를 사용하고 적응함으로써 sample code (기밀 유지 계약을 수락 한 다음 "샘플 코드"를 클릭하십시오.), 나는 아무데도 가지 않을거야.PHP WSDL에서 포트 이름을 지정하는 방법

SOAP PHP 모듈이 생성하는 요청을 살펴보면 잘못된 함수가 사용되는 것이 문제라고 생각합니다. 나는 전체 WSDL을 공개 할 수 있다고 생각하지 않습니다, 그러나 여기에서 발췌 한 것입니다

<!-- Service --> 

<service name="AirService"> 
    <port name="AirRepriceSearchPort" 
      binding="tns:AirRepriceSearchBinding"> 
     <soap:address 
       location="http://localhost:8080/kestrel/AirService" /> 
    </port> 

    <port name="AirScheduleSearchPort" 
      binding="tns:AirScheduleSearchBinding"> 
     <soap:address 
       location="http://localhost:8080/kestrel/AirService" /> 
    </port> 

    <port name="AirLowFareSearchPort" 
      binding="tns:AirLowFareSearchBinding"> 
     <soap:address 
       location="http://localhost:8080/kestrel/AirService" /> 
    </port> 

은 분명히 스크립트가 항상 AirReprice 모듈 대신 LowFareSearch 모듈을 기반으로 요청을 생성가. 사실, WSDL을 편집하고 첫 번째 요소로 "AirLowFareSearchPort"를 넣으면 요청이 작동합니다.

내가 시도한 다음

  • $client->AirLowFareSearchPort($data)를 사용하여 걸리지 만 유효한 기능하지 않습니다 할 작업을 지정; . "서비스"

:

  • 나는 $client->__getfunctions()를 사용하여 모든 기능을 가지고

    그것은 단지 "기능"과 같은
    [0]=> 
    string(48) "AirRepriceRsp service(AirRepriceReq $parameters)" 
    [1]=> 
    string(56) "ScheduleSearchRsp service(ScheduleSearchReq $parameters)" 
    [2]=> 
    string(54) "LowFareSearchRsp service(LowFareSearchReq $parameters)" 
    [3]=> 
    string(66) "LowFareSearchAsynchRsp service(LowFareSearchAsynchReq $parameters)" 
    

    는하지만하지 않습니다 어디 괄호 안에 물건을 넣을거야.

    다른 아이디어가 없습니다. 바라기를 당신은 도울 수있을 것이다!

    업데이트 : 나는 그것이 문제를 노출 this article을 발견했습니다

    . 그러나 PHP 웹 서비스라는 자체 모듈을 참조합니다. SOAP로 같은 일을해야합니다. 정말 도움이 필요합니다.

  • 답변

    3

    일단 WSDL을로드하면 __setLocation으로 끝점을 수동으로 설정할 수 있어야합니다.

    예 :

    $client = new SoapClient('http://localhost/supplied_path?wsdl'); 
    $client->__setLocation('http://localhost:8080/kestrel/AirService'); 
    
    print_r($client->__getfunctions()); 
    
    관련 문제