SOAP-вызов с несколькими пространствами имен - PullRequest
0 голосов
/ 08 февраля 2012

У меня проблема с некоторыми звонками на веб-сервис:

Когда я создаю SoapEnveloper, я помещаю это в провод

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:GetUserIDByName>
      <tem:sUser>sample</tem:sUser>
         <tem:oParam>
            <tem:CountryURL>US</tem:CountryURL>
            <tem:noCache>false</tem:noCache>
         </tem:oParam>
      </tem:GetUserIDByName>
   </soapenv:Body>
</soapenv:Envelope>

Но ответ приходит как:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing">
   <env:Header>
      <wsa:MessageID>urn:16092960528611E1BFADB7181697B03B</wsa:MessageID>
      <wsa:ReplyTo>
         <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
         <wsa:ReferenceParameters>
            <instra:tracking.ecid xmlns:instra="http://xmlns.oracle.com/sca/tracking/1.0">0000JLUJsMq0VsSqyCBh6G1FCdSn000GYf</instra:tracking.ecid>
         </wsa:ReferenceParameters>
      </wsa:ReplyTo>
   </env:Header>
   <env:Body>
      <GetUserIDByNameResponse xmlns="http://tempuri.org/">
         <Error>
            <ErrorCode>0</ErrorCode>
            <ErrorMessage>''</ErrorMessage>
         </Error>
         <ReturnValue>0</ReturnValue>
         <GetUserIDByNameResult>9815</GetUserIDByNameResult>
      </GetUserIDByNameResponse>
   </env:Body>
</env:Envelope>

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

[SoapDocumentMethodAttribute("http://tempuri.org//GetUserNameById", 
    RequestNamespace="http://tempuri.org/", 
    ResponseNamespace="http://tempuri.org/", 
    Use=System.Web.Services.Description.SoapBindingUse.Literal, 
    ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]

соответствует пространству имен по умолчанию.

Кажется, проблема в том, что процесс десериализации не понимает ответ.

Есть идеи, как это исправить?

...