如何在 C# 中调用基于 XML-RPC 规范的 API?

How to call an API which is based on XML-RPC specification in C#?

这是我的样品请求,

<?xml version=”1.0” encoding=”UTF-8”?>
 <methodCall>
  <methodName>login</methodName>
   <params>
    <param>
     <value>
      <struct>
       <member>
        <name>password</name>
        <value><string>XXXXXXXXXX</string></value>
       </member>
       <member>
        <name>username</name>
        <value><string>XXXX@XXX.com</string></value>
       </member>
    </struct>
  </value>
 </param>
 </params>
</methodCall>

这是我对请求的成功响应示例:

<struct>
  <member>
    <name>id</name>
    <value><string>12345</string></value>
  </member>
  <member>
    <name>api_status</name>
    <value><int>200</int></value>
  </member>
</struct>

问题:

我试图从 .NET 控制台应用程序 调用 API 端点。 但是,它没有连接到服务器。谁能告诉我如何使用 C# 调用此 API 端点?

第 1 步:在 .NET

中创建了一个 控制台应用程序

第 2 步:安装 NuGetxml-rpc.net

第 3 步:创建示例 请求 模型 class 像这样,

 public class request
    {
        public string username { get; set; }
        public string password { get; set; }
    }

第 4 步:创建示例 响应 模型 class 像这样,

public class response
    {
        public int id { get; set; }
        public int status { get; set; }        
    }

第 5 步:创建一个从 IXmlRpcProxy 基础 class 继承而来的 接口 命名空间 using CookComputing.XmlRpc; 的帮助下 这个接口必须包含我们的端点方法,它应该用 filter XmlRpcUrl 装饰 API 资源。

    [XmlRpcUrl("https://api.XXX.com/XXX")]
    public interface FlRPC : IXmlRpcProxy
    {
        [XmlRpcMethod("login")]//endpoint name
        response login(request request);
    }

第 6 步:要调用 XML-RPC 服务器,必须使用 proxy[=46= 的实例] class。

class Program
    {
        static void Main(string[] args)
        {
            response response = new response();
            request request = new request();
            FlRPC proxy = XmlRpcProxyGen.Create<FlRPC>();
            request.password = "xxxxxxxx";
            request.username = "xxxx@xxxx.org";
            response = proxy.login(request);
        }
    }

注意:上面的request,responsemodelclass必须包含所有属性和 属性 名称对于端点请求响应的负载应该更苗条。