【问题标题】:Accessing XML RPC Interface访问 XML RPC 接口
【发布时间】:2015-01-15 19:56:51
【问题描述】:

我有一些带有 rtorrent 的服务器。我想获取有关这些服务器的状态信息并删除我想使用 rtorrent 的 XML rpc 接口的种子。

scgi_port = 本地主机:5000 https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC

现在我需要一些帮助才能将信息从界面返回到我的程序。 我已经有一些代码,但是执行时总是出错。

附加信息:无法建立与远程服务器的连接。

using System;
using System.Text;
using System.Net;
using System.IO;

namespace SimpleXmlRpcClient
{
    class Program
    {
        static void Main(string[] args)
        {
            WebRequest request = WebRequest.Create("http://ip/RPC2");
            request.Method = "POST";
            string postData = @"<?xml version=""1.0""?>
            <methodCall>
              <methodName>system.listMethods
            </methodCall>";
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = byteArray.Length;
            Stream dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();
            WebResponse response = request.GetResponse();
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);
            dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            string responseFromServer = reader.ReadToEnd();
            Console.WriteLine(responseFromServer);
            reader.Close();
            dataStream.Close();
            response.Close();
            Console.WriteLine("Press any key to continue ...");
            Console.ReadKey();
        }
    }
}

【问题讨论】:

    标签: c# xml rpc xml-rpc


    【解决方案1】:

    好! ,Olias的解法是正确的。

    【讨论】:

      【解决方案2】:

      我终于找到了解决办法。

      您仍然可以解析 xml 编码的响应,但现在我终于得到了响应。

      System.Net.ServicePointManager.Expect100Continue = false;
                      byte[] requestData = Encoding.ASCII.GetBytes("<?xml version=\"1.0\"?><methodCall><methodName>system.listMethods</methodName></methodCall>");
      
                      HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://ip/RPC2");
                      request.Method = "POST";
                      request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729;)";
                      request.ContentType = "text/xml";
                      request.ContentLength = requestData.Length;
      
                      using (Stream requestStream = request.GetRequestStream())
                          requestStream.Write(requestData, 0, requestData.Length);
      
                      string result = null;
                      using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                      {
                          using (Stream stream = response.GetResponseStream())
                          {
                              using (StreamReader reader = new StreamReader(stream, Encoding.ASCII))
                                  result = reader.ReadToEnd();
                          }
                      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-28
        • 2011-08-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多