/// 说明:GET请求
/// WebGet默认请求是GET方式
/// UriTemplate(URL Routing)的参数名name必须要方法的参数名必须一致(不区分大小写)
/// RequestFormat规定客户端必须是什么数据格式请求的(JSon或者XML),不设置默认为XML
/// ResponseFormat规定服务端返回给客户端是以是什么数据格返回的(JSon或者XML)
/// 说明:POST请求
/// WebInvoke请求方式有POST、PUT、DELETE等,所以需要明确指定Method是哪种请求的,这里我们设置POST请求。
/// 注意:POST情况下,UriTemplate(URL Routing)一般是没有参数(和上面GET的UriTemplate不一样,因为POST参数都通过消息体传送)
/// RequestFormat规定客户端必须是什么数据格式请求的(JSon或者XML),不设置默认为XML
/// ResponseFormat规定服务端返回给客户端是以是什么数据格返回的(JSon或者XML)
///
[ServiceContract]
public interface IRiskWcfServer
{
/// <summary>
/// xxxxx
/// </summary>
/// <param name="rwts_param"></param>
/// <returns></returns>
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "GetRiskResearchData", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
ResultMessage GetRiskResearchData(RiskJudgeEntiy riskParam);
/// <summary>
/// xxxxxx
/// </summary>
/// <param name="riskParam"></param>
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "RiskInformEvent", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
void RiskInformEvent(string riskParam);
// TODO: 在此添加您的服务操作
}
初入Wcf restful 趟过一些坑,做下记录,下次翻查。
错误描述:接口Post 调用,输入数字能正常回调参数,输入Json串,报错:the server encounterer an error prossing the request
![]()
为此郁闷了好久,
后来翻看了错误代码:
接口使用json 协议,类库会自动进行序列化操作,接口定义处,接受需用实体类接收。

2、返回数据实体结构问题
返回数据实体结构会序列化为json格式传输,最好根据输出的json串定义好实体结构,自己定义可能会出错,多重结构嵌套,我使用过object来定义实体类内部字段类型,解析不了。
可以参考网站:http://json2csharp.chahuo.com/ 自动转换实体

本文记录了在使用Wcf Restful接口时遇到的问题,包括POST调用时输入Json报错以及返回数据实体结构导致的错误。解决方法包括确保接口使用正确的实体类接收json数据,以及根据json结构定义实体结构,避免多重结构嵌套。推荐使用在线工具http://json2csharp.chahuo.com/进行json到实体类的自动转换。
437

被折叠的 条评论
为什么被折叠?



