2013-03-05 6 views
1

Я пытаюсь добавить метку к заголовкам моего запроса на 3-й партии Java WebService, который выглядит как:Создать MessageHeader без сериализации XML Content

<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-1120"> 
    <wsu:Created>2013-03-05T07:18:42.672Z</wsu:Created> 
    <wsu:Expires>2013-03-05T07:23:42.672Z</wsu:Expires> 
</wsu:Timestamp> 

Я использую этот код -

Message request;  

// TESTVALUE 
string content = "<Created>2013-03-05T07:18:42.672Z</Created><Expires>2013-03-05T07:23:42.672Z</Expires>"; 

MessageHeader msgHeader = MessageHeader.CreateHeader("Timestamp", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", content); 
request.Headers.Add(msgHeader); 

Проблема заключается в том, что она упорядочивает свое содержание к этому, и я понятия не имею, как я могу это исправить -

<Timestamp xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
     &lt;Created&gt;2013-03-05T07:18:42.672Z&lt;/Created&gt;&lt;Expires&gt;2013-03-05T07:23:42.672Z&lt;/Expires&gt; 
    </Timestamp> 

Я попытался добавить два XElement, но проблема в том, что я могу предоставить только один из них.

ответ

1

Проблема в том, что WCF кодирует то, что вы указали как содержимое в пределах заголовка. Вы можете просто создать пользовательский класс «Timestamp» для обработки содержимого метки времени, вместо использования строки. Вероятно, вы можете использовать DataContract для его сериализации, но в худшем случае вам придется прибегать к специальной сериализации XML в новом классе.

+0

Где я должен применять DataContract? (У меня нет доступа к сервису) –

+1

Вы создали бы класс для метки времени со свойствами для двух дат. Затем вы должны дать им имена в соответствии с именами XML-элементов, которые вы хотите. Примените DataContract к Timestamp и DataMember к двум датам, и это * должно * работать. Я сейчас на планшете, так что я не могу это доказать. –

Смежные вопросы