Как связаться между Python и C# с помощью XML-RPC?

Вот способ сделать это с LINQ к XML, вместе с примером кода:

Quickly Import и Export Данные Excel с LINQ к XML

Это - немного комплекса, так как необходимо импортировать пространства имен и т.д, но это действительно позволяет Вам избежать любых внешних зависимостей.

(Кроме того, конечно, это-.NET VB, не C#, но можно всегда изолировать материал.NET VB в его собственном проекте использовать литералы XML и сделать все остальное в C#.)

5
задан Benjamin 7 December 2013 в 18:07
поделиться

3 ответа

Не для того, чтобы гудеть в свой рог, но: http://liboxide.svn.sourceforge.net/viewvc/liboxide/trunk/Oxide.Net/Rpc/

class XmlRpcTest : XmlRpcClient
{
    private static Uri remoteHost = new Uri("http://localhost:8888/");

    [RpcCall]
    public string GetTest()
    {
        return (string)DoRequest(remoteHost, 
            CreateRequest("getTest", null));
    }
}

static class Program
{
    static void Main(string[] args)
    {
        XmlRpcTest test = new XmlRpcTest();
        Console.WriteLine(test.GetTest());
    }
}

Это должен помочь ... Обратите внимание, что вышеупомянутая библиотека - это LGPL, которая может вам подойти или не подойти.

3
ответ дан 14 December 2019 в 04:45
поделиться

Для вызова метода getTest из C # вам понадобится клиентская библиотека XML-RPC. XML-RPC является примером такой библиотеки.

2
ответ дан 14 December 2019 в 04:45
поделиться

Спасибо за ответ, пробую библиотеку xml-rpc по ссылке darin. Я могу вызвать функцию getTest с помощью следующего кода

using CookComputing.XmlRpc;
...

    namespace Hello
    {
        /* proxy interface */
        [XmlRpcUrl("http://localhost:8888")]
        public interface IStateName : IXmlRpcProxy
        {
            [XmlRpcMethod("getTest")]
            string getTest();
        }

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                /* implement section */
                IStateName proxy = (IStateName)XmlRpcProxyGen.Create(typeof(IStateName));
                string message = proxy.getTest();
                MessageBox.Show(message);
            }
        }
    }
3
ответ дан 14 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: