2011-09-25 4 views
0

내 응용 프로그램에서 간단한 비누 호출을 시작하려고합니다.PHP 호출 비누 함수 및 데이터 전달

비누 웹 서비스는 위치 : 'http://www.asd.com?wsdl'

비누 웹 서비스하는 방법을 노출 : 나는 전달할 수 있습니다) (즉, WS로 업로드() 메소드를 업로드 문자열 데이터 :

 $wsdl = "http://www.asd.com?wsdl"; 
     $ws = new SoapClient($wsdl); 
     $vem = $ws->__soapCall('upload', array('arg0'=>'sgfsg')); 

는 WS 방법 것들은 arg0 = NULL받는 것 같은데이 PHP 코드는 괜찮습니다 '는 arg0은'

그래서 내 코드는 표시처럼 보인다? (

$ VEM = $ WS-> 업로드 :

는 WS의 WSDL

 <wsdl:definitions name="aWS" targetNamespace="http://validator.aWS.it/"> 
<wsdl:import location="http://asd.com/aWS?wsdl=aWSDL.wsdl" namespace="http://interfaces.aWS.it/"> 
    </wsdl:import><wsdl:binding name="aWSSoapBinding" type="ns1:..."> 
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
<wsdl:operation name="Upload"> 
<soap:operation soapAction="" style="document"/> 
<wsdl:input name="Upload"> 
<soap:body use="literal"/> 
</wsdl:input> 
<wsdl:output name="UploadResponse"><soap:body use="literal"/> 
</wsdl:output> 
</wsdl:operation> 
<wsdl:operation name="ping"> 
<soap:operation soapAction="" style="document"/> 
<wsdl:input name="ping"> 
<soap:body use="literal"/> 
</wsdl:input> 
<wsdl:output name="pingResponse"> 
<soap:body use="literal"/> 
</wsdl:output> 
<wsdl:fault name="NonBlockingExecption"> 
<soap:fault name="NonBlockingExecption" use="literal"/> 
</wsdl:fault> 
</wsdl:operation> 
</wsdl:binding> 
<wsdl:service name="aWS"> 
<wsdl:port binding="tns:aWSSoapBinding" name="aWSPort"> 
<soap:address location="http://asd.com/aWS"/> 
</wsdl:port> 
</wsdl:service> 
</wsdl:definitions> 

하는 WSDL 타입

<wsdl:definitions name="aWS" targetNamespace="http://interfaces.aWS.it/"> 
<wsdl:types> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://interfaces.aWS.it/"> 
<xs:element name="Upload" type="tns:Upload"/> 
<xs:element name="UploadResponse" type="tns:UploadResponse"/> 
<xs:element name="ping" type="tns:ping"/> 
<xs:element name="pingResponse" type="tns:pingResponse"/> 
<xs:complexType name="Upload"> 
<xs:sequence> 
<xs:element minOccurs="0" name="arg0" type="xs:string"/> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="UploadResponse"> 
<xs:sequence/> 
</xs:complexType> 
<xs:complexType name="ping"> 
<xs:sequence/> 
</xs:complexType> 
<xs:complexType name="pingResponse"> 
<xs:sequence> 
<xs:element name="return" type="xs:int"/> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="NonBlockingExecption"> 
<xs:sequence/> 
</xs:complexType> 
<xs:element name="NonBlockingExecption" type="tns:NonBlockingExecption"/> 
</xs:schema> 
</wsdl:types> 
<wsdl:message name="NonBlockingExecption"> 
<wsdl:part element="ns1:NonBlockingExecption" name="NonBlockingExecption"> 
</wsdl:part> 
</wsdl:message> 
<wsdl:message name="Upload"> 
<wsdl:part element="ns1:Upload" name="parameters"> 
</wsdl:part> 
</wsdl:message> 
<wsdl:message name="pingResponse"> 
<wsdl:part element="ns1:pingResponse" name="parameters"> 
</wsdl:part> 
</wsdl:message> 
<wsdl:message name="ping"> 
<wsdl:part element="ns1:ping" name="parameters"> 
</wsdl:part> 
</wsdl:message> 
<wsdl:message name="UploadResponse"> 
<wsdl:part element="ns1:UploadResponse" name="parameters"> 
</wsdl:part> 
</wsdl:message> 
<wsdl:portType name="aWS"> 
<wsdl:operation name="Upload"> 
<wsdl:input message="ns1:Upload" name="Upload"> 
</wsdl:input> 
<wsdl:output message="ns1:UploadResponse" name="UploadResponse"> 
</wsdl:output> 
</wsdl:operation> 
<wsdl:operation name="ping"> 
<wsdl:input message="ns1:ping" name="ping"> 
</wsdl:input> 
<wsdl:output message="ns1:pingResponse" name="pingResponse"> 
</wsdl:output> 
<wsdl:fault message="ns1:NonBlockingExecption" name="NonBlockingExecption"> 
</wsdl:fault> 
</wsdl:operation> 
</wsdl:portType> 
</wsdl:definitions> 

답변

1

시도 함께 비누 메소드 호출 (3 명령)을 변경 "sgfsg");

보통 WSDL 모드에서 soapCall을 사용하는 대신 Soap Client 객체의 메소드로 호출됩니다.

http://www.asd.com?wsdl을 열려고했지만 어떤 wsdl 코드도 표시되지 않습니다.

작업 업로드가 매개 변수로 문자열 만 필요하면 배열을 만들지 않고 전달할 수 있습니다.

+0

asd.com은 로컬 시스템입니다. 어쨌든 당신의 제안은 여전히 ​​WS에서 NULL 값을 제공합니다 : ( – sbaaaang

+1

클라이언트가 만드는 http/soap 요청의 내용을 살펴볼 수 있습니다.이를 수행하기 위해 tcpmonitor (Windows의 경우) 또는 tcpdump (Linux의 경우)와 같은 유틸리티를 사용할 수 있습니다 다른 많은 모니터를 사용할 수있어 클라이언트가 생성 한 비누 메시지의 형식을 볼 수 있으므로 비누 메시지에 업로드 방법의 매개 변수가 있는지 확인할 수 있습니다. –