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

标签 c# .net api xml-rpc nuget-package

这是我的 sample 请求,

<?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 步:创建一个示例请求 模型类,如下所示,

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

第 4 步:创建一个示例响应 模型类,如下所示,

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

第 5 步:创建一个继承自 IXmlRpcProxy 基类的接口(interface)命名空间的帮助下 using CookComputing.XmlRpc; 并且这个接口(interface)必须包含我们的端点方法,它应该用具有 API 资源的 filter XmlRpcUrl 装饰。

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

第 6 步:要调用 XML-RPC 服务器,必须使用 proxy 类的实例。

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);
        }
    }

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

关于c# - C#中如何调用基于XML-RPC规范的API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40647779/

相关文章:

c# - 数据库中的任务有多个程序处理它们——如何确保每个任务都被恰好处理一次?

c# - 在 xamarin 表单中使用 yyy 编写特征时如何修复异常设备 xxx 已断开连接?

c# - ScintillaNET 中的缩进和智能缩进

c# - 如何提高使用 Ghostscript 从 PDF 生成的 JPEG 图像的质量?

java - 包含对实现代码的引用的 OSGi 导出 API 安全吗?

php - Magento 中用于管理员登录身份验证的 API

c# - 扩展 Convert.ChangeType 以根据请求生成用户定义的类型

c# - 在列表中跟踪分数以及姓名

c# - 正则表达式无法区分 float 和 int 类型

api - 在没有包装器的情况下在 QT 上使用 OpenGL