我需要实现一个简单的XML-RPC Web服务,以便与Shopatron API(http://developer.shopatron.com/api)一起使用,特别是Ready Order Download部分(http://developer.shopatron.com/ReadyOrderDownload)
第三方(Shopatron)会将一些XML包数据转储到URL。我只需要处理它。
我已将Nuget Package xmlrpcnet(https://www.nuget.org/packages/xmlrpcnet)安装到我的网站项目中。
我的问题:我需要将哪种类型的网络服务添加到我的VS项目网站,以简化这项工作?
我想要一个:
奖金问题:我是否可以使用一个好的测试工具" post" XML-RPC示例包到我的本地开发网站?
答案 0 :(得分:1)
我认为更好的选择是使用WCF作为创建Web服务的推荐(今天)方式。使用WCF基础结构创建服务允许您在IIS,WAS(获取服务),控制台应用程序中托管您的服务,没有太多问题和摩擦。 This项目(提供XmlRpcEndpointBehavior)和tutorial可以提供帮助(已经讨论过here)。
您甚至可以使用WCF支持类/对象轻松解析请求体xml并提供所需的响应xml结构:
代表:
[OperationContract]
[WebInvoke(
BodyStyle = WebMessageBodyStyle.Bare,
Method = "POST",
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/somemethod?param1={param1}¶m2={param2}")]
System.ServiceModel.Channels.Message SomeMethod(Stream stream, string param1, string param2)
{
string xmlString;
var inputStream = stream;
using (var streamReader = new StreamReader(inputStream))
{
xmlString = streamReader.ReadToEnd();
}
var sourceXml = new XmlDocument();
sourceXml.LoadXml(xmlString);
//...
var xml = new XDocument(...);
//...
var settings = new XmlWriterSettings();
settings.Indent = true;
var sb = new StringBuilder();
using (var writer = XmlWriter.Create(sb, settings))
{
xml.WriteTo(writer);
writer.Flush();
}
WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
return WebOperationContext.Current.CreateTextResponse(sb.ToString());
}
顺便说一下asmx,svc - 它只用于在Web应用程序(IIS)中托管您的服务,asmx - 过时,ashx-http处理程序(严格来说不是WS标准Web服务),而不是来自WCF'世界 - 如果你走的方式,你可能需要XML-RPC.NET is a library。