教程:简单的 WCF XML-RPC 客户端
Posted
技术标签:
【中文标题】教程:简单的 WCF XML-RPC 客户端【英文标题】:Tutorial: Simple WCF XML-RPC client 【发布时间】:2011-02-22 03:14:48 【问题描述】:更新:我在下面的答案中提供了完整的代码示例。
我已经构建了自己的小型自定义 XML-RPC 服务器,并且由于我希望在服务器端和客户端都保持简单,因此我想要完成的是创建一个最简单的客户端(最好使用 C# ) 使用 WCF。
假设通过 XML-RPC 公开的服务 Contract 如下:
[ServiceContract]
public interface IContract
[OperationContract(Action="Ping")]
string Ping(); // server returns back string "Pong"
[OperationContract(Action="Echo")]
string Echo(string message); // server echoes back whatever message is
因此,有两个示例方法,一个没有任何参数,另一个带有简单的字符串参数,两者都返回字符串(仅作为示例)。服务通过 http 公开。
Aaand,下一步是什么? :)
【问题讨论】:
【参考方案1】:受 Doobi 回答的启发,我查找了有关该主题的更多信息(示例),并得出以下发现。
创建简单 WCF XML-RPC 客户端的步骤:
-
从此页面下载 WCF 的 XML-RPC:http://vasters.com/clemensv/PermaLink,guid,679ca50b-c907-4831-81c4-369ef7b85839.aspx(下载链接在页面顶部)
创建一个以 .NET 4.0 Full 框架为目标的空项目(否则 System.ServiceModel.Web 稍后将不可用)
将 Microsoft.Samples.XmlRpc 项目从存档添加到您的项目
添加对 Microsoft.Samples.XmlRpc 项目的引用
添加对 System.ServiceModel 和 System.ServiceModel.Web 的引用
示例代码
using System;
using System.ServiceModel;
using Microsoft.Samples.XmlRpc;
namespace ConsoleApplication1
// describe your service's interface here
[ServiceContract]
public interface IServiceContract
[OperationContract(Action="Hello")]
string Hello(string name);
class Program
static void Main(string[] args)
ChannelFactory<IServiceContract> cf = new ChannelFactory<IServiceContract>(
new WebHttpBinding(), "http://www.example.com/xmlrpc");
cf.Endpoint.Behaviors.Add(new XmlRpcEndpointBehavior());
IServiceContract client = cf.CreateChannel();
// you can now call methods from your remote service
string answer = client.Hello("World");
请求/响应消息示例
请求 XML
<?xml version="1.0" encoding="utf-8"?>
<methodCall>
<methodName>Hello</methodName>
<params>
<param>
<value>
<string>World</string>
</value>
</param>
</params>
</methodCall>
响应 XML
<?xml version="1.0" encoding="utf-8"?>
<methodResponse>
<params>
<param>
<value>
<string>Hello, World!</string>
</value>
</param>
</params>
</methodResponse>
【讨论】:
【参考方案2】:最简单的方法是使用 WCF 通道工厂
IStuffService client = new ChannelFactory<IStuffService>(
new BasicHttpBinding(),
*"Stick service URL here"*)
.CreateChannel();
只需调用即可执行请求
var response = client.YourOperation(params)
更多细节在这里: http://msdn.microsoft.com/en-us/library/ms734681.aspx
编辑:编辑;)
【讨论】:
+1 简明扼要。但这对我不起作用。我收到“无法识别的消息版本”错误。请参阅我的答案以获得对我有用的解决方案。 请编辑你的帖子,这样我就可以给你投票了(出了点问题,它说只有你编辑你的帖子我才能给你投票,呵呵)以上是关于教程:简单的 WCF XML-RPC 客户端的主要内容,如果未能解决你的问题,请参考以下文章