1

我正在尝试将时间戳添加到我对第 3 方 Java Web 服务的请求的标头中,如下所示:

<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,但问题是我只能提供其中一个..

4

1 回答 1

1

问题是 WCF 正在对您标头中指定为内容的内容进行编码。您可以创建一个自定义的“时间戳”类来处理时间戳的内容,而不是使用字符串。您可能可以使用 aDataContract对其进行序列化,但最坏的情况是您必须在新类中使用自定义 XML 序列化。

于 2013-03-05T17:08:37.693 回答