У меня проблема с некоторыми звонками на веб-сервис:
Когда я создаю 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)]
соответствует пространству имен по умолчанию.
Кажется, проблема в том, что процесс десериализации не понимает ответ.
Есть идеи, как это исправить?