/// 说明: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/ 自动转换实体