Odd*_*eif 7 .net c# serialization json.net
任何人都有序列化HttpRequestMessage对象的经验?尝试使用Json.net,它可以部分运行.也就是说,JsonConvert.DeserializeObject由于结构问题而失败StringContent:"无法找到用于类型System.Net.Http.StringContent的构造函数".
这里的用例很简单,我想保存Web请求并在以后发出,如果出现临时网络问题或服务不可用等.
失败的示例代码:
var request = new HttpRequestMessage(HttpMethod.POST, "http://www.something.com");
request.Headers.Date = DateTimeOffset.UtcNow;
request.Headers.AcceptLanguage.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue("en-US"));
request.Content = new StringContent("Hello World!");
request.Content.Headers.Add("x-some", "thing");
var result = JsonConvert.SerializeObject(request, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects,
TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full
});
var deserializeRequest = JsonConvert.DeserializeObject<HttpRequestMessage>(result, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects
});
Run Code Online (Sandbox Code Playgroud)
可以使用以下示例代码序列化/反序列化 HttpRequest 的相关部分。
var request = new HttpRequestMessage(HttpMethod.Post, "http://www.something.com");
request.Content = new StringContent("Hello World!");
var serializedRequestByteArray = new HttpMessageContent(request).ReadAsByteArrayAsync().Result;
var tmpRequest = new HttpRequestMessage();
tmpRequest.Content = new ByteArrayContent(serializedRequestByteArray);
tmpRequest.Content.Headers.Add("Content-Type", "application/http;msgtype=request");
var deserializedRequest = tmpRequest.Content.ReadAsHttpRequestMessageAsync().Result;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10979 次 |
| 最近记录: |