2012-01-19 3 views
2

Я новичок в .NET-сервисах .NET и полностью смущен этой проблемой. TCP просмотра показывает, что мой тест приложение говорить с моей веб-сервис формирует XML следующим образом:Почему мой XML-сервисы .NET отличаются друг от друга?

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <GetSupply xmlns="http://webservices.florecom.org/commercial/customer/"> 
     <Request> 
     <SupplyRequest> 
      <Header xmlns="urn:fec:florecom:xml:data:draft:SupplyStandardMessage:5"> 
      <UserName>xxx</UserName> 
      <Password>xxx</Password> 
      <MessageDateTime>2012-01-17T14:59:44.0438037+02:00</MessageDateTime> 
      <MessageSerial>0</MessageSerial> 
      </Header> 
      <Body xmlns="urn:fec:florecom:xml:data:draft:SupplyStandardMessage:5"> 
      <SupplyRequestDetails> 
       <SupplyRequestLine xmlns="urn:fec:florecom:xml:data:draft:ReusableAggregateBusinessInformationEntity:3"/> 
      </SupplyRequestDetails> 
      </Body> 
     </SupplyRequest> 
     </Request> 
    </GetSupply> 
    </s:Body> 
</s:Envelope> 

Но мой веб-сервис получает XML от другой компании, которая выглядит следующим образом:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
    <fsm:SupplyRequest xmlns:qdt="urn:un:unece:uncefact:data:draft:QualifiedDataType:5" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:4" xmlns:ram="urn:un:unece:uncefact:data:draft:ReusableAggregateBusinessInformationEntity:3" xmlns:fsm="urn:fec:florecom:xml:data:draft:SupplyStandardMessage:5"> 
     <fsm:Header> 
     <fsm:UserName>xxx</fsm:UserName> 
     <fsm:Password>xxx</fsm:Password> 
     <fsm:MessageID>634617184436505019</fsm:MessageID> 
     <fsm:MessageDateTime>2012-01-09T15:07:23.6505019+01:00</fsm:MessageDateTime> 
     <fsm:MessageSerial>0</fsm:MessageSerial> 
     </fsm:Header> 
     <fsm:Body> 
     <fsm:SupplyRequestDetails> 
      <SupplyRequestLine xmlns="urn:fec:florecom:xml:data:draft:ReusableAggregateBusinessInformationEntity:3"/> 
     </fsm:SupplyRequestDetails> 
     </fsm:Body> 
    </fsm:SupplyRequest> 
    </soap:Body> 
</soap:Envelope> 

Может кто-то помочь объяснить, почему? Являются ли эти разные версии SOAP? Благодаря

UPDATE

По сути интереса, проблема, которая происходит в этом случае (с сообщением 2 XML) является то, что, когда метод обслуживания получает удар (используется контрольная точка, чтобы проверить это и фальсифицированную сообщение с Fiddler) .NET не удалось связать параметр метода (так называемый «запрос»), поэтому его значение остается NULL

+0

Они выглядят одинаково для меня, и если бы они не были бы вы получите ошибки – Jontatas

+0

@Jontatas: К сожалению, я получаю ошибки (см. «Обновление выше»), и сообщения (в моих глазах n00b) совершенно разные? – Jimbo

+0

Я бы сказал, что вы наткнулись на то же самое, что я заметил при использовании данных веб-сервиса на нашей платформе интеграции. Самое смешное, если я вернусь к одному объекту, который он работает, но для данных массива это не выход. См. Http://stackoverflow.com/questions/8485744 – Jontatas

ответ

3

Если вы имеете в виду мыло против s, это на самом деле не очень важно. эти узлы являются пространствами имен, чтобы потребитель знал формат документа. Они фактически будут обрабатываться одинаково, кто знает схему, определенную http://schemas.xmlsoap.org/soap/envelope

Как сослаться на мыло 1,1 пространства имен

+0

К сожалению, это не объясняет, почему, хотя он попадает в метод службы, поставляемый параметр по-прежнему является Null во втором сообщении, но работает в первом сообщении. – Jimbo

+0

Какой узел XML это? –

+0

В методе службы, называемом 'GetSupply', этот параметр называется' Request' - он связывается в 1-м сообщении, но не второй – Jimbo