Обновление: Я предоставил полный пример кода в ответе ниже.
Я создал свой собственный небольшой пользовательский сервер XML-RPC, и так как я хотел бы сохранить вещи простыми, и на стороне сервера и на стороне клиента, что я хотел бы выполнить, должен создать самый простой клиент (в C# предпочтительно) использующий WCF.
Скажем, тот Контракт для сервиса, подвергнутого через XML-RPC, следующие:
[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, что является следующим?:)
Вдохновленный ответом Дуби, я поискал дополнительную информацию (примеры) по этому вопросу и пришел к следующим выводам.
Шаги по созданию простого клиента WCF XML-RPC:
Пример кода
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>
Самый простой способ - использовать фабрику каналов 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
изменить: отредактировано;)