2017-09-26 121 views
1

我已經設置了一個asp.net MVC web應用程序來捕獲發佈請求。我已經設置了斷點來查看哪些信息正在通過。當一個交互式按鈕被點擊時,我的斷點被擊中,但對象沒有任何細節。它簡單地說{Object}當我停留在value上。當我使用Postman併發送一個原始JSON正文時,它顯示JSON。請問我如何處理髮送的鬆弛對象?處理來自Slack的發佈請求

public void Post(object value) 
{ 
    // breakpoint here 
} 
+0

請提供讀取POST請求並解碼JSON的實際代碼,這只是一個空的函數.... –

+0

@ErikKalkoken也許我措辭不佳,但我正在尋找如何解析對象。它不會在我的結尾顯示爲JSON。有沒有我可以把這個對象給予的類? – Master

+0

請看我的擴展答案。 –

回答

2

對於交互式消息鬆弛發送與身體中稱爲​​單格式數據編碼的參數標準POST請求。該參數包含實際請求的數據作爲JSON字符串。

可以通過使用下列參數與郵差模擬此:

  • 搜索類型:POST
  • 部首:Content-Type: application/x-www-form-urlencoded
  • 身體:form-data,與key =​​和value = JSON字符串。

因此,正如您所設想的那樣,body不是完全的JSON,而是包含帶有JSON編碼字符串的表單參數。如果你相應地改變你的應用程序,它會起作用。

在c#中,您可以使用Request["payload"](請參閱this answer或詳細信息)訪問​​參數的內容。

然後你仍然需要將JSON字符串解碼成一個對象當然。一個簡單的方法是使用JavaScriptSerializer.Deserialize。 (詳情請參閱this answer)。

+0

嗨,Erik,你創建了什麼類型的應用程序來接受這些發佈請求? asp.net mvc呢?我試過了,並且我看到了這個https://imgur.com/a/ri6Wg – Master

+0

如果這種方法不起作用,請查看關於如何使用c#取回POST請求的替代方法的鏈接答案。 –

+0

嘿,任何意見你有沒有在.net核心中完成這項工作?使用框架4.6,它可以很好地處理Request [「payload」],但不是.net core的解決方案。 – Master