【问题标题】:Web Service using SOAP WDSL with PHP使用 SOAP WSDL 和 PHP 的 Web 服务
【发布时间】:2010-07-22 09:23:40
【问题描述】:

我一直在尝试使用具有以下 WSDL 文件的 Web 服务。我不确定的一点是我应该通过或处理它的第一部分。它要求将具有 tns 类型的个人详细信息对象传递给它,但我不明白这是什么意思?我尝试使用的实际方法称为 PersonalDetails_Update ,我将所有相关值传递给它,但它一直失败,我怀疑它与它之前要求的这个 personadetails 对象有关?

<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>

【问题讨论】:

    标签: php web-services wsdl soap-client


    【解决方案1】:

    要发送的信息的结构是这样的:

    <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 定义了详细信息

    【讨论】:

      【解决方案2】:

      看看Zend_Soapnative Soap extension。两者都有关于如何编写 Soap 客户端的信息。

      【讨论】:

      • $client = new SoapClient(null, array('location' => "localhost/soap.php", 'uri' => "test-uri", 'style' => SOAP_DOCUMENT, 'use' => SOAP_LITERAL));你知道这些参数指的是什么以及我可以在哪里找到它们 - 特别是 URI 和位置。这个例子没有很好的记录。
      • @baswoni 这些参数是选项,通常在非 wsdl 模式下工作时传入,例如当构造函数的第一个参数为空时。选项在de2.php.net/manual/en/soapclient.soapclient.php 有详细解释
      • 我将使用 WSDL 与此 Web 服务交互,所以我仍然处于死胡同,我正在尝试回答我最初的问题 - 为什么会有 PersonalDetails 对象和PersonalDetails_Update 对象?我看不到您提供的链接如何帮助回答这个问题?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多