[Web API][筆記] POST 總是 Nothing 或 null

小喵最近開始學習Web API,這種沒有畫面的運作方式還真有點不習慣,好在有Chrome裡面的PostMan與Fiddler這兩套工具的幫忙,可以順利進行學習。不過使用Fiddler剛學習POST的時候,就遇到程式總是收不到東西,總是 Nothing (VB.NET) / null (C#)。後來找了一下,原來~

緣起

小喵最近開始學習Web API,這種沒有畫面的運作方式還真有點不習慣,好在有Chrome裡面的 PostManFiddler 這兩套工具的幫忙,可以順利進行學習。不過使用Fiddler剛學習POST的時候,就遇到程式總是收不到東西,總是 Nothing (VB.NET) / null (C#)。後來找了一下,原來~

 

狀況

小喵開始練習POST,於是簡單的用了以下這樣的程式


    ' POST api/values
    Public Function PostValue(<FromBody()> ByVal value As String)
        Return "Post : " & value.ToString
    End Function

然後在 Fiddler 的 Composer 選擇了POST,並且在Body的地方放了

=topcat

預期可以收到 Post : topcat 這樣的訊息,但是每每收到的卻是【並未將物件參考設定為物件的執行個體。】

 

原因

後來找了一下相關的問題,發現了以下這一篇

http://stackoverflow.com/questions/10984040/post-parameter-is-always-null

答案揭曉,就是在Header中,少定義了 Content-Type

所以只要在Header中,加上以下這行

Content-Type: application/x-www-form-urlencoded

就可以收到如預期中的 Post : topcat 訊息了。

 

另外,如果要傳遞的是 json 的資料,也記得要將相關的Header改為

Content-Type: application/json

 

筆記一下,也提供大家參考


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat