小编Chr*_*s C的帖子

如何在RestSharp中发送POST请求?

我有这个代码,我试图转换为RestSharp.为了清楚起见,我删除了使用块来压缩它.

using System.IO;
using System.Net;
using RestSharp;

string GetResponse(string url,string data)
{
    var request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    var bytes = Encoding.UTF8.GetBytes(data);
    request.ContentLength = bytes.Length;
    request.GetRequestStream().Write(bytes, 0, bytes.Length);
    var response = (HttpWebResponse)request.GetResponse();
    var stream = response.GetResponseStream();
    if (stream == null) return string.Empty;
    var reader = new StreamReader(stream);
    return reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下顺序:

string GetResponse(string url, string data)
{
    var client = new RestClient(url);
    var request = new RestRequest("", RestSharp.Method.POST);
    request.AddParameter("application/x-www-form-urlencoded", data);
    var response = client.Execute(request);
    return response.Content; …
Run Code Online (Sandbox Code Playgroud)

c# rest restsharp

5
推荐指数
1
解决办法
1万
查看次数

Json.NET不会在对象的列表或字典中保留原始类型信息.有解决方法吗?

以下示例说明了Json.NET类型处理的一个基本缺陷:

List<object> items = new List<object>() {Guid.NewGuid(),DateTime.Now};
var settings = new JsonSerializerSettings() { TypeNameHandling=TypeNameHandling.All };
var json = JsonConvert.SerializeObject<List<object>>(value,settings);
Run Code Online (Sandbox Code Playgroud)

产生以下JSON:

{"$type":"System.Collections.Generic.List`1[[System.Object, mscorlib]], mscorlib","$values":["9d7aa4d3-a340-4cee-baa8-6af0582b8acd","2014-07-28T21:03:17.1287029-04:00"]}
Run Code Online (Sandbox Code Playgroud)

如您所见,列表项已丢失其类型信息.反序列化相同的JSON将导致列表只包含字符串.

此问题先前已在codeplex上报告并且已经完全关闭,说明包含类型信息会使JSON过于混乱.我很惊讶我们没有给出单独的选项来包括原始类型信息,因为往返一致性被打破了.

https://json.codeplex.com/workitem/23833

我希望数据返回时带有与之相同的类型信息.有没有人有任何建议或解决方法来纠正这种不良行为?

谢谢,

克里斯

c# json json.net

5
推荐指数
1
解决办法
1353
查看次数

标签 统计

c# ×2

json ×1

json.net ×1

rest ×1

restsharp ×1