【发布时间】:2012-07-30 15:27:47
【问题描述】:
我在使用我的网络服务时遇到了一个奇怪的问题:
当我作为客户端将表单发布到 REST Web 服务而不设置任何“类型内容”标头时,一切正常。我在服务器上接到电话,并且 Json 文本可用。
如果我作为客户端将我的 post 请求的 content-type 标头设置为“application/json”,则服务器会回复“Bad Request (400)”。
网络服务方法是:
<WebInvoke(UriTemplate:="Login", Method:="POST")>
Public Function LoginFormAccess(data As IO.Stream) As String
(...)
end function
如果我不提及“Application/Json”,我可以检索客户端 json 类型的主体,发布在 data 流中。如果我这样做,我会得到错误的请求答案。
为什么关于内容类型值的行为存在如此大的差异,以及是什么提供了这种差异?该方法是否需要其他类型的参数,或者必须更改或检查其他内容?
添加:如果内容类型是“Application/Json”并且正文为空,那么它可以工作...!
注意 1:负责接听电话的类是实例化的。 (一种 new() 中的跟踪证明了这一点)。所以,问题似乎是服务器没有找到合适的方法来调用该对象......
注意 2:我在使用不同的客户端时遇到了这个问题,所以我很漂亮 肯定是服务器端的问题。
注 3:我使用了 WCF REST 服务应用程序模板来创建 我的项目。
注意 4:提及“ResponseFormat=WebMessageFormat.Json”和“RequestFormat=WebMessageFormat.Json”没有帮助。
【问题讨论】:
-
尝试将
ResponseFormat=WebMessageFormat.Json添加到WebInvoke -
我试过了。但没有成功。我添加了一个“requestFormat:=WebMessageFormat.Json”,因为它是 Json 格式的请求。但它不起作用......
-
如果我将内容类型设置为“text/javascript”,它就可以工作。 “Application/Json”有什么不同???
标签: vb.net json web-services rest