2017-10-10 66 views
0

嘿,我有一个奇怪的问题,我想不出。基本上我试图做一个简单的httpClient发布请求,但我不断收到“无效的json原语:。”我检查了https://jsonlint.com/,它说这是有效的JSON,但我的申请另有规定。任何信息,将不胜感激?无效json primative

string test = "{\"CurrentUser\":null,\"Stacktrace\":\"System.UnhandledExceptionEventArgs\",\"OtherData\":null,\"UserInput\":\"\",\"TimeStamp\":\"2017-10-10T16:48:58.606512-04:00\"}" 

HttpContent httpContent = new StringContent(test); 
await httpClient.PostAsync("/api/logException", httpContent); 

,并且客户端初始化,如:

httpClient = new HttpClient(); 
httpClient.BaseAddress = new Uri(this.serverURL); 
httpClient.Timeout = TimeSpan.FromSeconds(400); 
+0

你能告诉我你如何初始化你的HttpClient? –

+0

完成,但我不认为这里有什么特别的。我其实可以做其他的帖子请求,但这个具体的请求似乎是问题。如果这有助于将未处理的异常记录到数据库 – Seamy

+0

刚刚构建并运行了此操作,并且一切似乎都正常工作。我认为这个问题应该在你的配置中更深一层。 –

回答

0

嘿谢谢你的答案。你们都是对的,我很感谢你们的帮助。这个问题最终并不是json。基本上这个错误是在我认为它被处理后传播并且实际上出现了两次。所以我认为它告诉我存在无效的JSON(它破坏的地方)实际上是从进一步的代码重复相同的错误信息。

再次感谢。

0

我不是专家,但因为没人回应,也许你只需要设置的内容类型,以JSON?

HttpContent httpContent = new StringContent(test, Encoding.UTF8, "application/json"); 

POSTing JsonObject With HttpClient From Web API

+0

我试过这样的想法,但也没有运气。 – Seamy

0

尝试String.Replace("\", string.Empty)你的JSON。也许这会起作用。

2

而不是自己编写JSON格式(这很容易出错),您如何简单地创建一个对象并将其序列化为JSON。让C#完成繁重的工作。首先创建这样一个类:

public class Model 
{ 
    public string CurrentUser { get; set; } = null; 
    public string Stacktrace { get; set; } = "System.UnhandledExceptionEventArgs"; 
    public string UserInput { get; set; } = String.Empty; 
    public string OtherData { get; set; } = null; 
    public string TimeStamp { get; set; } = "2017-10-10T16:48:58.606512-04:00"; 
} 

然后初始化这个类的一个对象,并简单地使用JavaScriptSerializer将其序列化成JSON:

Model md = new Model(); 
System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer(); 
var json = ser.Serialize(md); 

的结果将是JSON:

{"CurrentUser":null,"Stacktrace":"System.UnhandledExceptionEventArgs","UserInput":"","OtherData":null,"TimeStamp":"2017-10-10T16:48:58.606512-04:00"}