WCF REST 读取 JSON 请求正文



我已经尝试了一个星期来了解如何获取和读取 HttpRequest 的请求正文作为 JSON(它以 JSON 格式发送给我)。我认为就我而言,这是一个WCF RESTful服务,但我不确定。 到目前为止,我走得最远的是使用OperationContext.Current.RequestContext.RequestMessage.ToString()它为我提供了请求正文的内容,但它不是 JSON,而是将其显示为它的奇怪 xml 翻译,如下所示:

<root type="object">
<reqPrices type="object">
<regionID type="null"/>
<cityCode type="string">New York</cityCode>
<userName type="string">test</Password>
</obj>
</root>

我有一个带有以下代码的 IService 类:

namespace TBServices.Services.SilWebApi
{
[ServiceContract]
public interface IServiceSilWebApi
{
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "prices",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
Stream DoWorkPrices();
}
}

以及具有以下代码的服务:

namespace TBServices.Services.SilWebApi
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class ServiceSilWebApi : BaseService, IServiceSilWebApi
{
...
public Stream DoWorkPrices()
{   
string aa = OperationContext.Current.RequestContext.RequestMessage.ToString();
return new Stream();
}
...
}
}

配置文件中的相关部分是:

<service name="TBServices.Services.SilWebApi.ServiceSilWebApi">
<endpoint address="" behaviorConfiguration="web" binding="customBinding" bindingConfiguration="RawReceiveCapable" contract="TBServices.Services.SilWebApi.IServiceSilWebApi" />
</service>

我是 WCF/REST/SOAP/Web 服务的新手,我已经阅读了我能找到的关于我正在尝试做的事情的任何内容,无论是在这里还是在 MSDN 中,但我仍然无法弄清楚。我已经看到了这个链接,与我的问题非常相似:https://social.msdn.microsoft.com/Forums/vstudio/en-US/d3b6307e-886c-4b8a-a7ff-00cd9490520b/read-incoming-data-as-json-wcf?forum=wcf,但我不明白其中的大部分。 任何帮助将不胜感激!

如果仅使用 POST 接收数据,则方法需要一个参数来接收 POST 数据:

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "prices",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
Stream DoWorkPrices(string jsonData);

相关内容

  • 没有找到相关文章

最新更新