xcode объект wcf в качестве параметра - PullRequest
0 голосов
/ 03 января 2012

Я пытаюсь вызвать Службу WCF из XCODE, у которой в качестве параметра указан объект вместо строки или long. Я всегда использую пару сервисов, которые хотят иметь простой параметр типа string или long, и они работают отлично. Но когда я использую объект в качестве параметра, я могу попасть в службу C # на моем компьютере с Windows, но параметр всегда является новым объектом C # без значений. Объект, который я использую, выглядит следующим образом:

[DataContract]
public class MobileComplaint
{
    [DataMember]
    public long MobileComplaintID { get; set; }
    [DataMember]
    public string CaseNo { get; set; }
    [DataMember]
    public DateTime CreationDate { get; set; }
    [DataMember]
    public string CreationUser { get; set; }
    [DataMember]
    public string DaysSinceLastChange { get; set; }
    [DataMember]
    public string State { get; set; }
}

Функция выглядит следующим образом:

[OperationContract]
MobileComplaint Save(long UserID, MobileComplaint mc);

Для обычных функций я использую сообщения, которые выглядят так:

     <?xml version="1.0" encoding="UTF-8"?>
 <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
 <SOAP-ENV:Body> 
 <OpenComplaint xmlns="http://tempuri.org/"> 
 <MobileComplaintID>3</MobileComplaintID> 
 </OpenComplaint> 
 </SOAP-ENV:Body> 
 </SOAP-ENV:Envelope>

Вопрос теперь, как мне написать параметр для этого сообщения!

Второй вопрос необходимо ли добавить все параметры для объекта или это нормально, когда я просто заполняю те, которые мне нужны.

THX за помощь

Я всегда пробовал следующие два:

<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
<SOAP-ENV:Body> 
<Save xmlns="http://tempuri.org/"> 
 <UserID>229001</UserID> 
<mc xmlns:a="http://schemas.datacontract.org/2004/07/Ibs.MobileDefectDetection.Vo" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
<a:MobileComplaintID>29292</MobileComplaintID> 
</mc> 
</Save> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope>



<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
<SOAP-ENV:Body> 
<Save xmlns="http://tempuri.org/"> 
 <UserID>229001</UserID> 
<mc> 
<MobileComplaintID>29292</MobileComplaintID> 
</mc> 
</Save> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope>

ОК, я опечатал:

29292

29292 Я пропустил "а:"

Теперь он заполняет некоторые свойства объекта, но не все!

У кого-нибудь есть идея, как это может произойти?

1 Ответ

1 голос
/ 04 января 2012

Я узнал это сам!Когда вы находитесь в чистой среде .NET, порядок свойств в любом случае.Но когда вы переходите с Xcode на C #, порядок должен быть правильным.Теперь я добавил свойство Order ко всем моим атрибутам DataMember в DataContract и следовал этому порядку в xcode

[DataMember(Order=1)]

Michael

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...