2010-07-22 24 views
0

我一直在嘗試使用具有下面的WSDL文件的Web服務。我不確定的一點是我本應該通過或做的第一部分。它要求一個帶有tns類型的personaldetails對象被傳遞給它,但我不明白這意味着什麼?我正在嘗試使用的實際方法稱爲PersonalDetails_Update,並且將所有相關值傳遞給它,但它仍然失敗,我懷疑這是與它在此之前要求的personadetails對象有關嗎?使用SOAP的WDSL與PHP的Web服務

<s:element name="PersonalDetails_Update"> 
− 
<s:complexType> 
− 
<s:sequence> 
<s:element minOccurs="0" maxOccurs="1" name="personaldetails" type="tns:PersonalDetails"/> 
</s:sequence> 
</s:complexType> 
</s:element> 
− 
<s:complexType name="PersonalDetails"> 
− 
<s:sequence> 
<s:element minOccurs="1" maxOccurs="1" name="ContactId" nillable="true" type="s:int"/> 
<s:element minOccurs="1" maxOccurs="1" name="GenderId" type="s:int"/> 
<s:element minOccurs="1" maxOccurs="1" name="EthnicityId" type="s:int"/> 
<s:element minOccurs="0" maxOccurs="1" name="Title" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="Initials" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="Honours" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="Surname" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="Salutation" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="Position" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="Department" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="Organisation" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="AccessRequirements" type="s:string"/> 
<s:element minOccurs="0" maxOccurs="1" name="DietaryNeeds" type="s:string"/> 
<s:element minOccurs="1" maxOccurs="1" name="BirthDate" nillable="true" type="s:dateTime"/> 
<s:element minOccurs="1" maxOccurs="1" name="IsNewContact" type="s:boolean"/> 
<s:element minOccurs="1" maxOccurs="1" name="HoldingId" nillable="true" type="s:int"/> 
<s:element minOccurs="1" maxOccurs="1" name="WebId" nillable="true" type="s:int"/> 
<s:element minOccurs="1" maxOccurs="1" name="RecruitedId" type="s:int"/> 
</s:sequence> 
</s:complexType> 
− 
<s:element name="PersonalDetails_UpdateResponse"> 
− 
<s:complexType> 
− 
<s:sequence> 
<s:element minOccurs="1" maxOccurs="1" name="PersonalDetails_UpdateResult" type="s:int"/> 
</s:sequence> 
</s:complexType> 
</s:element> 

回答

0

的信息結構送是這樣的:

<Envelope> 
    <Header/> 
    <Body> 
    <PersonalDetails_Update> 
     <personaldetails> 
     <ContactId>[some value]</ContactId> 
     <GenderId>[some value]</GenderId> 
     <EthnicityId>[some value]</EthnicityId> 
     <Title>[some value]</Title> 
     <Initials>[some value]</Initials> 
     <Honours>[some value]</Honours> 
     <FirstName>[some value]</FirstName> 
     <Surname>[some value]</Surname> 
     <Salutation>[some value]</Salutation> 
     <Position>[some value]</Position> 
     <Department>[some value]</Department> 
     <Organisation>[some value]</Organisation> 
     <AccessRequirements>[some value]</AccessRequirements> 
     <DietaryNeeds>[some value]</DietaryNeeds> 
     <BirthDate>[some value]</BirthDate> 
     <IsNewContact>[some value]</IsNewContact> 
     <HoldingId>[some value]</HoldingId> 
     <WebId>[some value]</WebId> 
     <RecruitedId>[some value]</RecruitedId> 
     </personaldetails> 
    </PersonalDetails_Update> 
    </Body> 
</Envelope> 

PersonalDetails_Update是您將使用 personaldetails的服務是將持有的細節 PersonalDetails的對象定義細節

0

看一看Zend_Soapnative Soap extension。兩者都有關於如何編寫Soap客戶端的信息。

+0

$ client = new SoapClient(null,array('location'=>「http://localhost/soap.php」, 'uri'=>「http:// test-uri /」, 'style'=> SOAP_DOCUMENT, 'use'=> SOAP_LITERAL)); 你知道這些參數指的是什麼以及我可能在哪裏找到它們 - 特別是URI和位置。這個例子沒有很好的記錄。 – chocolatecoco 2010-07-22 09:51:34

+0

@baswoni這些參數是您在非wsdl模式下工作時通常通過的選項,例如當構造函數的第一個參數爲null時。這些選項在http://de2.php.net/manual/en/soapclient.soapclient.php – Gordon 2010-07-22 10:05:30

+0

詳細解釋。我將使用WSDL與此Web服務進行接口,所以我仍然處於死衚衕,而我我試圖得到我原來的問題的答案 - 爲什麼有PersonalDetails對象和PersonalDetails_Update對象?我沒有看到你提供的鏈接如何幫助回答這個問題? – chocolatecoco 2010-07-22 10:24:54