客户端如何将参数传递给RESTful WCF服务

时间:2011-10-27 09:03:56

标签: wcf rest wcf-client wcf-rest restsharp

我正在使用2种方法构建一个RESTful服务(注意:我将ASPNETCompatilibilityMode设置为true):

[WebInvoke]
string TestMethodA()
{
        string test = HttpContext.Current.Request.Form["xml"];
}

[WebInvoke]
string TestMethodB(string res)
{
        string xml = res;
}

现在,在构建客户端以将参数传递给MethodA时,请执行以下操作:

request.AddParameter("xmlString", HttpUtility.HtmlEncode(requestBody));

为了向MethodB发送消息,我执行以下操作:

request.AddParameter("text/xml",requestBody, ParameterType.RequestBody);

现在的问题是:

客户如何知道如何传递参数?客户端不知道服务器实现。

发送请求的客户端正在使用RestSharp Api。

1 个答案:

答案 0 :(得分:0)

由于MethodB()接受一个字符串,WCF不知道它应该是什么样子。它可以是XML,JSON,自由文本等等。在您的实现中,您只需记录如何格式化请求并将其提供给实现客户端的任何人。

更好的方法是创建一个C#对象,使用适当的序列化属性对其进行标记,并将其用作MethodB()的参数。例如:

[DataContract]
public class MyDataContract{

    [DataMember]
    public string SomeString{get;set;}

    [DataMember]
    public int SomeNumber{get;set;}    
}

public void MethodB(MyDataContract arguments){
  //do stuff

}

这将允许WCF基础结构自动解析参数。您也可以从中获得WCF自动生成帮助文档。