2

我正在使用 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。

4

1 回答 1

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 从此自动生成帮助文档。

于 2012-03-16T02:12:49.430 回答