2015-09-16 50 views
0

問題:當我通過PHP SoapClient向Biztalk發送請求時,我正在丟失一個節點<StreetName>OAGIS模式忽略<StreetName>節點

Biztalk通過OAGIS模式驗證我們的請求。

要發送,我轉換XMLArray,併發送類似數組的請求,但是當檢查我的最後一個SOAP請求$soapClient->__getLastRequest(),我失去的節點。

我的要求陣列:

'Location' => 
    array(
     'Address' => 
      array(
       'StreetName' => 'StreetName', 
       'CityName' => 'Zyrardow', 
       'CountrySubDivisionCode' => 'PL', 
       'CountryCode' => 'PL', 
       'PostalCode' => '96-300', 
      ), 
    ), 

$soapClient->__getLastRequest()我失去節點<StreetName>

</ns1:Location> 
    <ns1:Address> 
     <ns1:CityName>MyCityName</ns1:CityName> 
     <ns1:CountrySubDivisionCode>PL</ns1:CountrySubDivisionCode> 
     <ns1:CountryCode>PL</ns1:CountryCode> 
     <ns1:PostalCode>96-300</ns1:PostalCode> 
    </ns1:Address> 
</ns1:Location> 

在OAGIS文檔節點<Address>應該包含這個節點 OAGIS doc "Address"

在情況下,如果我發送:

<AddressLine> 

或:

<LineOne> 
<LineTwo> 
<LineThree> 
<LineFour> 
<LineFive> 

這個節點,我們失去!

'Location' =>array(
    'Address' => 
     array(
      'AddressLine' => 'AddressLine', 
      'CityName' => 'Zyrardow', 
      'CountrySubDivisionCode' => 'PL', 
      'CountryCode' => 'PL', 
      'PostalCode' => '96-300', 
     ), 
), 
<ns1:Location> 
    <ns1:Address> 
     <ns1:AddressLine>AddressLine</ns1:AddressLine> 
     <ns1:CityName>MYCHANGESHERE</ns1:CityName> 
     <ns1:CountrySubDivisionCode>PL</ns1:CountrySubDivisionCode> 
     <ns1:CountryCode>PL</ns1:CountryCode> 
     <ns1:PostalCode>96-300</ns1:PostalCode> 
    </ns1:Address> 
<ns1:Location> 

和:數組和最後一個請求($soapClient->__getLastRequest())的

'Location' =>array(
    'Address' => 
     array(
      'LineOne' => 'LineOne', 
      'LineTwo' => 'LineTwo', 
      'LineThree' => 'LineThree', 
      'LineFour' => 'LineFour', 
      'LineFive' => 'LineFive', 
      'CityName' => 'Zyrardow', 
      'CountrySubDivisionCode' => 'PL', 
      'CountryCode' => 'PL', 
      'PostalCode' => '96-300', 
     ), 
), 
<ns1:Location> 
    <ns1:Address> 
     <ns1:LineOne>LineOne</ns1:LineOne> 
     <ns1:LineTwo>LineTwo</ns1:LineTwo> 
     <ns1:LineThree>LineThree</ns1:LineThree> 
     <ns1:LineFour>LineFour</ns1:LineFour> 
     <ns1:LineFive>LineFive</ns1:LineFive> 
     <ns1:CityName>MYCHANGESHERE</ns1:CityName> 
     <ns1:CountrySubDivisionCode>PL</ns1:CountrySubDivisionCode> 
     <ns1:CountryCode>PL</ns1:CountryCode> 
     <ns1:PostalCode>96-300</ns1:PostalCode> 
    </ns1:Address> 
<ns1:Location> 

附加信息:

我發現documentation,它告訴我們,我們需要選擇我們將發送什麼。但在我的情況下,一些節點被忽略。

回答

0

BDN,

OAGIS 9.4.1在您的鏈接指定的地址定義:
(地址線或(一號線,二號線,三線,四線,五線 )或(大廈號碼,建築物名稱,街道名稱,單位,樓層, 郵政信箱,交貨點代碼))

如果您選擇使用AddressLine或LineOne,則無法通過此定義使用StreetName。

最新版本的OAGIS 10.1沒有這個限制。

+0

是的,我知道了。但是當我只發送''沒有'AddressLine或LineOne'時,我正在失去''節點。 – bdn

0

BDN,

如果您使用的是帶有StreetName序列的選擇的XML模式定義允許通過的定義。從XML模式定義中,xsd不會刪除內容。

Mike