我正在使用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。
答案 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自动生成帮助文档。