我使用我的web服務時出現了一個奇怪的問題:爲什麼設置POST內容類型:「Application/Json」在REST WebService上導致「錯誤請求」?
當我作爲一個客戶端在沒有設置任何「類型 - 內容」頭的情況下將表單發佈到REST Web服務時,事情可以正常工作。我接到服務器上的呼叫,Json文本可用。
如果我作爲客戶端將我的發佈請求的內容類型標頭設置爲「application/json」,則服務器通過「錯誤請求(400)」回覆。
Web服務方法是:
<WebInvoke(UriTemplate:="Login", Method:="POST")>
Public Function LoginFormAccess(data As IO.Stream) As String
(...)
end function
如果我不提「應用程序/ Json的」,我可以檢索客戶端JSON類型的機構,張貼在數據流。如果我這樣做,我會收到錯誤的請求答案。
爲什麼有關內容類型值的行爲有如此大的差異,以及提供這種差異的是什麼?該方法是否需要另一種類型的參數,或者是否需要更改或檢查其他內容?
ADDED:如果內容類型是「Application/Json」並且主體是空的,那麼它可以工作...!
注1:類負責接聽電話被實例化。 (在新()中跟蹤的證明了它)。所以,問題似乎是服務器沒有找到一個適當的方法來調用該對象...
注2:我有這個問題使用不同的客戶端,所以我很漂亮 肯定是一個服務器端問題。
注意3:我已經使用WCF REST服務應用程序模板創建我的項目 。注意4:提及「ResponseFormat = WebMessageFormat.Json」和「RequestFormat = WebMessageFormat.Json」沒有幫助。
嘗試將'ResponseFormat = WebMessageFormat.Json'添加到'WebInvoke' – toniedzwiedz 2012-07-30 16:22:12
我試過了。但沒有成功。我添加了「requestFormat:= WebMessageFormat.Json」,因爲它是Json格式的請求。但它不起作用... – 2012-07-31 07:29:27
如果我將content-type設置爲「text/javascript」,它將起作用。與「Application/Json」有什麼不同? – 2012-07-31 08:08:29