我正在尝试使用 DelegatingChannel (MessageHandler) 来解密传入消息并加密传出消息。代码看起来像这样,但有一些占位符我不知道如何实现。
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
var inEncryptedMessage = request.Content.ReadAsOrDefault<EncryptedMessage>();
Message inMessage = inEncryptedMessage.Decrypt();
var newContent = new StringContent(inMessage.Data, Encoding.UTF8, "text/json");
newContent.Headers.ContentType = request.Content.Headers.ContentType;
request.Content = newContent;
return base.SendAsync(request, cancellationToken).ContinueWith(
task =>
{
HttpResponseMessage response = task.Result;
// need to serialize the data in response.Content as json
var outMessage = new Message {
Data = ... // but don't know how
};
var outEncryptedMessage = outMessage.Encrypt();
response.Content = new ObjectContent(outEncryptedMessage);
return response;
});
}
public class Message
{
public string Data { get; set; }
}
public class EncryptedMessage
{
public byte[] Key { get; set; }
public byte[] Message { get; set; }
}
我想将请求中的 JSON 字符串传递给操作,并在其中将 JSON 反序列化为对象。但是失败了……但是对象被创建了,但是所有的属性都是空的。
所以这阻止了我思考响应方面。但我仍然发现从 response.Content 读取对象的困难。
如果你有答案,请给我一些建议。
非常感谢,M