SoapClient Php发送xml数据麻烦

时间:2015-12-11 18:44:39

标签: php simplexml soap-client

我正在使用Web服务以XML格式获取用户数据,然后将其重新发送到具有更改的第二个Web服务。问题是我每次发送请求时最终都会创建一个没有数据的新用户。这意味着前3个元素被接受但User对象未被接受。我试图使用xml和aarray作为输入,但没有任何作用。 SaveUser服务需要一个复杂的对象,其WSDL要求类似于

<s:element name="SaveUser">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Username" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="CompanyID" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="User" type="tns:User"/>
</s:sequence>
</s:complexType>
</s:element>

这是我要发送的xml,由PHP代码中的$ userDataXML表示

<User>
<AccountExpiryDate>2114-08-11T15:22:08.983</AccountExpiryDate>
<AccountFailedLoginAttempts>0</AccountFailedLoginAttempts>
<AccountLastActiveDate>2015-12-11T13:17:57.6916477-05:00</AccountLastActiveDate>
<AccountLastIPAddress>192.81.170.5</AccountLastIPAddress>
<AccountLastLoginDate>2015-12-11T13:17:57.6916477-05:00</AccountLastLoginDate>
<AccountLoggedIn>true</AccountLoggedIn>
<AccountLogin>testuser3</AccountLogin>
<AccountPassword>password</AccountPassword>
<AccountPasswordChangeRequired>false</AccountPasswordChangeRequired>
<Active>true</Active>
<Address>
<CompanyID>0</CompanyID>
<ID>0</ID>
<UserID>210</UserID>
</Address>
<AddressList>
<Address>
<CompanyID>0</CompanyID>
<ID>0</ID>
<UserID>210</UserID>
</Address>
</AddressList>
<CreatedByUserID>1</CreatedByUserID>
<CreatedDate>2015-10-29T19:23:29.64</CreatedDate>
<CompanyID>4</CompanyID>
<Email1>fasd@THIS.HAS</Email1>
<ID>210</ID>
<LanguageID>0</LanguageID>
<ModifiedByUserID>1</ModifiedByUserID>
<ModifiedDate>2015-10-29T19:26:08.59</ModifiedDate>
<RoleID>9</RoleID>
<StoreID>0</StoreID>
<TokenID/>
<UpdateTimestamp>
<DateTime>2015-11-17T19:45:46</DateTime>
<MilliSeconds>718</MilliSeconds>
</UpdateTimestamp>
<Verified>true</Verified>
<XMLData>
<data xmlns=""/>
</XMLData>
</User>

这是我的SaveUser部分的PHP代码

$clientSaveUser = new SoapClient('$WSDL',array('trace'=>1));
    $saveUserQueryData = array(     
                        "Username"=> $master,
                        "Password"=>$masterPass,
                        "CompanyID"=>$compid,
                        "User"=>$userDataXML
                        );
    $saveUser = $clientSaveUser->SaveUser($saveUserQueryData);

    libxml_use_internal_errors(true);
    $lastResponseSaveUser = $clientSaveUser->__getLastResponse();

感谢您的帮助!

0 个答案:

没有答案