2010-07-22 76 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