【问题标题】:Is it possible to consume an XML RPC service using a basic HTTP request?是否可以使用基本 HTTP 请求来使用 XML RPC 服务?
【发布时间】:2015-12-07 10:00:57
【问题描述】:

我的任务是使用 XML RPC API,但我对它很陌生。我浏览了几页描述它的页面,并且我看到那里也有一些库。

然而,这让我觉得它归根结底就是发布一个 HTTP 请求,类似于 REST,除了在正文中使用 XML 而不是 JSON。

我想象构造一个类似于下面的 HTTP 请求:

POST /path/service.cfm HTTP/1.0
From: example@example.com
User-Agent: whatever/1.0
Content-Type: application/xml
Content-Length: 155

<?xml version="1.0"?>
<methodCall>
  <methodName>examples.getStateName</methodName>
  <params>
    <param>
        <value><i4>40</i4></value>
    </param>
  </params>
</methodCall>

我在正确的轨道上吗?周围丰富的图书馆给我的感觉,也许它比我想象的更复杂。理想情况下,我想自己用 .NET 编写一个快速客户端。

【问题讨论】:

    标签: c# xml web-services


    【解决方案1】:
        static void Main(string[] args)
        {
              HttpWebRequest request = BuildWebRequest();
    
              var response = request.GetResponse() as HttpWebResponse;
              var responseContent = new StreamReader(response.GetResponseStream()).ReadToEnd();
    
        }
    
        private static HttpWebRequest BuildWebRequest()
        {
            var request = WebRequest.Create(Url) as HttpWebRequest;
    
            request.Method = "POST";
            request.ContentType = "application/xml";
            request.Timeout = 40000;
            request.ServicePoint.Expect100Continue = true;
    
            string body = @"<?xml version="1.0"?>
    <methodCall>
      <methodName>examples.getStateName</methodName>
      <params>
        <param>
            <value><i4>40</i4></value>
        </param>
      </params>
    </methodCall>";
    
            byte[] bytes = Encoding.Default.GetBytes(body);
    
            using (var requestStream = request.GetRequestStream())
            {
                requestStream.Write(bytes, 0, bytes.Length);
            }
    
            return request;
        }
    

    是的,这不是问题,这里有一个示例。在字符串正文中,您必须只编写您的 xml,并且您应该输入正确的内容类型。如果服务提供商有特定标头之类的要求,您应该添加它们。

    【讨论】:

    • 啊,是的,这正是我想要的。那么你之前在 XML RPC 服务上使用过这个吗?
    • @drminnaar 如果你能帮到你,你可以接受我的回答。
    猜你喜欢
    • 2013-09-15
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    相关资源
    最近更新 更多