我有一个我定义的简单对象
using Newtonsoft.Json;
public class survey
{
public string title { get; set; }
public string description { get; set; }
public string deploymentType { get; set; }
public string deploymentMethod { get; set; }
public string instanceId { get; set; }
public surveyWhat what { get; set; }
public string[] contacts { get; set; }
}
public class surveyWhat
{
public bool removeDuplicates { get; set; }
public string instanceId { get; set; }
public string subject { get; set; }
public string from { get; set; }
public string bcc { get; set; }
public string emailTemplate { get; set; }
public string notificationId { get; set; }
}
使用这两个类构建实际对象时,我按如下方式进行操作。
survey s = new survey()
{
title = "test from .Net",
description = "test of immediate email deployment",
deploymentType = "immediate - deploy",
deploymentMethod = "email",
instanceId = "bla123",
what = new surveyWhat()
{
removeDuplicates = false,
subject = "test from .Net",
from = "a@b.c",
bcc = "a@b.c",
emailTemplate = "123id",
notificationId = "a@b.c"
},
contacts = new string[] { "user@person.com" }
};
然后我使用这个对象并使用NewtonSoft.Json dll,我将对象序列化为JSON字符串以传递给REST端点,如此。
string json = JsonConvert.SerializeObject(s);
using (var streamWriter = new StreamWriter(webRequest.GetRequestStream()))
{
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)webRequest.GetResponse();
这会引发400错误的请求错误。 JSON似乎有效,但在我身上失败了。它可以与对象中的对象有关吗?
object() { object(){} }
任何指针都会非常感激。
我正在使用.Net 4.5.2进行此构建。
答案 0 :(得分:0)
实际上,我认为回答你的问题已经足够好了,正如我在评论中所说:
A 400表示请求格式错误。换句话说,数据 客户端发送到服务器的流没有遵循规则。我们 不了解您的API,它的期望是什么。您 说JSON似乎是有效的。服务器响应它不是,所以我宁愿 认为你必须再看一遍它。也许读一些 您的API的文档。
现在更多 - 您可以使用Postman应用程序来测试对API的请求。如果您没有文档,这样您就可以找到正确的请求。然后,当您知道什么是正确的请求数据时,您可以检查序列化生成的json字符串,并检查错误。