【问题标题】:How to serialize Json object into System.Net.WebClient (.NET 3.5)如何将 Json 对象序列化为 System.Net.WebClient (.NET 3.5)
【发布时间】:2018-04-29 16:32:47
【问题描述】:

如何序列化 json 对象并将其传递给 api 调用,就像在此处发布的示例中的答案 Call web APIs in C# using .NET framework 3.5

System.Net.WebClient client = new System.Net.WebClient();
 client.Headers.Add("content-type", "application/json");//set your header here, you can add multiple headers
 string s = Encoding.ASCII.GetString(client.UploadData("http://localhost:1111/Service.svc/SignIn", "POST", Encoding.Default.GetBytes("{\"EmailId\": \"admin@admin.com\",\"Password\": \"pass#123\"}")));

在 Postman 中我会这样做

 var client = new RestClient("");
 var request = new RestRequest(Method.POST);
 request.JsonSerializer = new RestSharpJsonNetSerializer();
 request.AddJsonBody(JsonObject);

但是,由于 .net framework 3.5 不支持 Postman,我必须使用 System.Net.WebClient。

【问题讨论】:

  • 为什么要反序列化?您需要以序列化的形式发送它。
  • 问题已编辑。我的意思是序列化,当然..
  • 在这种情况下,看看 Newtonsoft 的 JSON.Net - 它几乎是 .NET 的事实上的 JSON 序列化程序(甚至微软都使用它)。
  • 你可以使用string s = client.UploadString("..","POST", JsonConvert.SerializeObject(yourObject));
  • 真的就这么简单.. 嗯,我想到了,但认为也许有更好的方法。添加您的评论作为答案:)

标签: c# .net


【解决方案1】:

你可以像这样使用WebClient(和 Json.NET 包)做你想做的事:

var yourObject = new YourObject {
    Email = "email",
    Password = "password"
};
string s = client.UploadString("http://localhost:1111/Service.svc/SignIn","POST", JsonConvert.SerializeObject(yourObject));

【讨论】:

  • @miniHessel 抱歉,我错过了 .NET 3.5。也许那里确实没有太多选择,不确定。
  • 我认为没有。你知道如何检查像这样的状态代码 IRestResponse response = client.Execute(request); if (response.StatusCode == System.Net.HttpStatusCode.OK) 返回真;使用 WebClient?
  • 好像没有直接的办法,不过你可以看看这个:stackoverflow.com/q/3574659/5311735。虽然如果响应代码不成功(不在 2xx 范围内) - 它应该抛出异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 2017-01-28
  • 2018-11-15
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
相关资源
最近更新 更多