首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试API Post传递一个<Frombody()>类-始终为空

测试API Post传递一个<Frombody()>类-始终为空
EN

Stack Overflow用户
提问于 2017-03-14 01:07:33
回答 1查看 4K关注 0票数 1

我正在VB中创建一个api conroller类。我有一个非常简单的功能:

代码语言:javascript
复制
Public Function Post(<FromBody()> ByVal value As String) As String
    Return value
End Function

当我从HTTP (FireFox扩展)发送POST请求时,我可以在函数中看到它,但是value总是空的。

我的WebApiConfig.vb里有这个

代码语言:javascript
复制
config.Routes.MapHttpRoute(
        name:="Names",
        routeTemplate:="{controller}/{id}",
        defaults:=New With {.id = RouteParameter.Optional}

这是在Global.ASAX.vb下的Application-Start()

代码语言:javascript
复制
RouteTable.Routes.MapHttpRoute(name:="Post", routeTemplate:="post", defaults:=New With {.symbol = RouteParameter.Optional, .controller = "Names"})

我也在Fiddler 4上尝试过这个,但是我得到了:

{“消息”:“请求包含实体体,但没有内容类型标头。此资源不支持推断的媒体类型‘application/octet’。“,”ExceptionMessage“:”没有MediaTypeFormatter可以从媒体类型‘application/octet’从内容中读取'String‘类型的对象。“,"StackTrace":”at System.Net.Http.HttpContentExtensions.ReadAsAsyncT(HttpContent content,type,IEnumerable '1 formatters,IFormatterLogger formatterLogger,\r\n在System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage请求下,键入类型,IEnumerable '1格式化程序,IFormatterLogger formatterLogger,CancellationToken cancellationToken)"}

或者,当我试图在标题中设置内容类型时,我会得到:

没有MediaTypeFormatter可以从媒体类型的内容中读取类型为“String”的对象.

其中<...>是我设置的任何媒体类型。

我如何使这个简单的职位工作?

EN

回答 1

Stack Overflow用户

发布于 2017-03-14 01:20:28

看起来,您为API使用的框架不知道如何根据在请求中设置的内容类型头来解析POST请求正文的内容。

还有,你的API controller may not know how to parse plain text

您可以手动添加受支持的内容类型,也可以根据上述链接中的一个答案手动读取请求内容。或者您可以将控制器更改为accept a form post like so

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42776143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档