json - 在 REST WCF 中读取 HttpRequest 主体

标签 json web-services .net-4.0 httprequest wcf-rest

我有一个在 .net 4 中运行的 REST WCF 服务,我已经测试了它正在运行的 Web 服务并接受了我向它发出的 HttpRequest。但是我在尝试访问 Web 服务中的 HttpRequest 主体时遇到了问题。我已经尝试使用 Fiddler 和我的 WinForm 应用程序发送附加在 HttpRequest 上的随机大小的数据,但我似乎无法在运行时找到任何可以找到我的请求正文所在的对象。我最初的直觉是查看 HttpContext.Current.Request.InputStream 但该属性的长度为 0,所以我尝试查看 IncomingWebRequestContext 该对象甚至没有没有方法或属性来获取 HttpRequest 的主体。

所以我的问题是,实际上是否有一种方法可以访问 WCF 中的 HttpRequest 请求正文?

附言: 请求体中的数据是 JSON 字符串,对于响应,它也会将响应体中的数据作为 JSON 字符串返回。

最佳答案

更简单,这个答案在WCF + REST: Where is the request data?工作正常。

此外,如果您的请求主体是可反序列化的,您可以只传递一个类。除非有一些拼写错误,否则这应该有效:

public class Banana
{
    public string Colour;
    public int Size;
}

...

[WebInvoke(
    Method = "POST", 
    UriTemplate = "bananas", 
    ResponseFormat=WebMessageFormat.Json, 
    RequestFormat=WebMessageFormat.Json)]
string CreateBanana(Banana banana);

...

public string CreateBanana(Banana banana)
{
    return "It's a " + banana.Colour + " banana!";
}

使用数据 {"Colour": "blue", "Size": 5} 对此资源进行 POST 应该返回 "It's a blue banana!"

关于json - 在 REST WCF 中读取 HttpRequest 主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3050110/

相关文章:

c# - 从 asmx 服务返回多行

java - Java 中的动态代理 soap Web 服务客户端?

linq - 在 LINQ 语句之间共享 where 子句

c# - ToLowerInvariant() 有什么问题?

java - 使用 json-simple 库在 Java 中解码 JSON 字符串

java - @JsonFormat 不适用于自定义序列化器

javascript - 使用 PHP 获取 Web 服务数据

string - 使用 StringBuilder 有什么缺点?

json - Elasticsearch中的删除字段

mysql - 如何在 mysql 查询中处理 json