我在使用我的网络服务时遇到了一个奇怪的问题:
当我作为客户端将表单发布到 REST Web 服务而不设置任何“类型内容”标头时,一切正常。我在服务器上接到电话,并且 Json 文本可用。
如果我作为客户端将我的发布请求的内容类型标头设置为“application/json”,则服务器会回复“错误请求 (400)”。
网络服务方法是:
<WebInvoke(UriTemplate:="Login", Method:="POST")>
Public Function LoginFormAccess(data As IO.Stream) As String
(...)
end function
如果我不提及“Application/Json”,我可以检索客户端 json 类型的正文,并发布在数据流中。如果我这样做,我会得到错误的请求答案。
为什么关于内容类型值的行为存在如此大的差异,以及提供这种差异的原因是什么?该方法是否需要其他类型的参数,或者必须更改或检查其他内容?
添加:如果内容类型是“应用程序/Json”并且正文为空,那么它可以工作......!
注 1:负责接听电话的类已实例化。(new() 中的痕迹证明了这一点)。所以,问题似乎是服务器没有找到合适的方法来调用该对象......
注意 2:我在使用不同的客户端时遇到了这个问题,所以我很确定是服务器端的问题。
注 3:我使用 WCF REST 服务应用程序模板来创建我的项目。
注 4:提及“ResponseFormat=WebMessageFormat.Json”和“RequestFormat=WebMessageFormat.Json”没有帮助。