2017-10-10 67 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"}