【发布时间】:2014-06-10 20:40:46
【问题描述】:
我得到了一个将 xml 发布到 wcf 服务的代码。这是完整的代码
1) WCF 服务接口
[OperationContract]
[WebInvoke(Method = "POST",
UriTemplate = "GetData",
RequestFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Bare)]
string GetData(DataRequest parameter);
2) WCF 服务实现
public string GetData(DataRequest parameter)
{
//Do stuff
return "your data here";
}
3) WCF 服务中的数据协定(在本例中为 DataRequest)
[DataContract(Namespace = "YourNamespaceHere")]
public class DataRequest
{
[DataMember]
public string ID{ get; set; }
[DataMember]
public string Data{ get; set; }
}
4) 发送数据的客户端必须正确构造数据! (本例中为 C# 控制台应用程序)
static void Main(string[] args)
{
ASCIIEncoding encoding = new ASCIIEncoding();
string SampleXml = "<DataRequest xmlns=\"YourNamespaceHere\">" +
"<ID>" +
yourIDVariable +
"</ID>" +
"<Data>" +
yourDataVariable +
"</Data>" +
"</DataRequest>";
string postData = SampleXml.ToString();
byte[] data = encoding.GetBytes(postData);
string url = "http://localhost:62810/MyService.svc/GetData";
string strResult = string.Empty;
// declare httpwebrequet wrt url defined above
HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url);
// set method as post
webrequest.Method = "POST";
// set content type
webrequest.ContentType = "application/xml";
// set content length
webrequest.ContentLength = data.Length;
// get stream data out of webrequest object
Stream newStream = webrequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
//Gets the response
WebResponse response = webrequest.GetResponse();
//Writes the Response
Stream responseStream = response.GetResponseStream();
StreamReader sr = new StreamReader(responseStream);
string s = sr.ReadToEnd();
return s;
}
我的问题是,如果 GetData() 函数需要两个或更多参数,那么我如何为 GetData() 提供值
public string GetData(string xml1,string xml2)
{
//Do stuff return "your data here";
}
所以请指导我如何将两个 xml 数据传递给GetData() 函数?
【问题讨论】:
-
只是为了理解:为什么不创建一个服务参考?由于调用者将使用强类型类而不是可变的 XML 数据,因此会使场景变得更容易也更安全。