我已经尝试了一个星期了解如何获取和读取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,但我不了解其中的大部分内容。 非常感谢任何帮助!
答案 0 :(得分:0)
如果仅使用POST接收数据,则您的方法需要一个参数来接收POST数据:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "prices",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
Stream DoWorkPrices(string jsonData);