2016-02-11 33 views
0

我已經通過Web API獲得了幫助herehere,但現在我想我已經到達了大峽谷的邊緣......幸運的是,我的老闆的執行被推遲了,但判決還沒有減刑。因此,任何建議全心全意,特別是因爲我的新手狀態尚未改變。Web API--調試顯示令人困惑的信息

因此,代碼如第二個鏈接問題所示(可以在此處發佈,但我認爲這將是多餘的)。我已經用SQL鏈接糾正了錯誤,所以在嘗試調用過程,設置調試環境並開始測試時,它現在不會崩潰。

我使用ARC擴展(有效載荷與JSON)發送POST請求在Chrome在調試時,我有一個錯誤信息:Error in API with code as intended

但是,改變利用的回答和評論這一建議代碼之後:

namespace NA.Controllers 
{ 
    public class NotesController : ApiController 
    { 

     [Route("AddNote")] 
     [HttpPost] 
     public HttpResponseMessage PostNote() 
     { 
      HttpResponseMessage response = new HttpResponseMessage(); 
      StreamReader stream = new StreamReader(HttpContext.Current.Request.InputStream); 
      string jsonData = stream.ReadToEnd(); 
      System.IO.File.WriteAllText(@"C:\temp\BLZ_content.txt", jsonData); 
      return response; 
     } 

    } 
} 

我得到了一個成功,正確的響應和json被保存到一個文件。所以API一般工作正常。這反過來,這意味着我的代碼反序列化JSON(或只是從身體捕獲它)不是。

+0

我不知道,你的編程技能有多好,但在這一點上,我會回去儘可能多地。由於沒有收到數據,您會收到一個空的異常。但在哪一點?是否有數據在您的API中的某個時刻到達,還是流甚至完全不存在?目前,您正在尋找錯誤的前方,看看電纜是否連接好,然後走向另一個方向。 –

+0

你的Json應該在HttpContext.Current.Request中。 – tede24

+0

@YoshSynergi對代碼進行了一些更改,將所有建議組合在這裏。肯定數據命中API(json被所述API保存在文本文件中)。編輯帖子以反映當前的事態。 – AcePL

回答

0

您無法從剛剛創建的響應對象讀取傳入數據。你必須從這樣的請求閱讀:

string jsonData = new StreamReader(Request.InputStream).ReadToEnd(); 

然後你就可以將其記錄到文件,看看是否你得到你期待得到什麼。如果這樣做,則可以手動反序列化jsonData列出這樣的:

List<Note> response = JsonConvert.DeserializeObject<List<Note>>(jsonData); 
+0

您的解決方案不適用於我...我使用@ tede24建議從上面的註釋並結合谷歌搜索我現在確定我收到POST消息,因爲JSON被保存在一個文件中。所以90%的成功。現在讓我們解決其餘90%的問題。 – AcePL

+0

那麼現在有什麼問題?使用JsonConvert的反序列化代碼是否適用於您?如果不是,那是什麼問題。 – Wapac