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

如何在C#中调用基于XML-RPC规范的API?,c#,.net,api,xml-rpc,nuget-package,C#,.net,Api,Xml Rpc,Nuget Package,这是我的样品要求 <?xml version=”1.0” encoding=”UTF-8”?> <methodCall> <methodName>login</methodName> <params> <param> <value> <struct> <member> <name>password</

这是我的样品要求

<?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>

登录
密码
XXXXXXXXX
用户名
XXXX@XXX.com
以下是我对请求的成功响应示例:

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

身份证件
12345
空气污染指数
200
问题:

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

步骤1:在.NET中创建一个控制台应用程序

步骤2:安装numgetxml-rpc.net

步骤3:像这样创建一个示例请求模型类

 public class request
    {
        public string username { get; set; }
        public string password { get; set; }
    }
public class response
    {
        public int id { get; set; }
        public int status { get; set; }        
    }
步骤4:像这样创建一个示例响应模型类

 public class request
    {
        public string username { get; set; }
        public string password { get; set; }
    }
public class response
    {
        public int id { get; set; }
        public int status { get; set; }        
    }
步骤5:创建一个接口,该接口继承自
IXmlRpcProxy
基类 借助使用CookComputing.XmlRpc的名称空间

这个接口必须包含我们的端点方法,并且应该使用过滤器
XmlRpcUrl
来装饰它,该过滤器具有API资源

    [XmlRpcUrl("https://api.XXX.com/XXX")]
    public interface FlRPC : IXmlRpcProxy
    {
        [XmlRpcMethod("login")]//endpoint name
        response login(request request);
    }
步骤6:要调用XML-RPC服务器,必须使用代理类的实例

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);
        }
    }
类程序
{
静态void Main(字符串[]参数)
{
响应=新响应();
请求=新请求();
FlRPC proxy=xmlrpcproxy.Create();
request.password=“xxxxxxxx”;
request.username=”xxxx@xxxx.org";
response=proxy.login(请求);
}
}

注意:上面的请求响应模型类必须包含所有属性,并且属性名称应该比端点的请求、响应的负载更细。

-应该help@AmitKumarGhosh是的,非常有帮助,谢谢。这很好,但是,如果我不知道要返回的响应,只想查看整个响应,该怎么办?我收到了以下错误:
response包含结构值,缺少非可选成员:Result Status[响应:结构映射到类型response]