Выполнение вызова XML -RP C на RTorrent-сервере возвращает 401 - PullRequest
0 голосов
/ 12 апреля 2020

Я экспериментирую с подключением к серверу rTorrent с помощью консольного приложения (я просто пытаюсь автоматизировать некоторые действия). Я довольно новичок в этом, так что может оказаться, что это настройка конфигурации, но я подумал, что сначала получу второе мнение о коде. Я могу сделать свой веб-запрос, но ответ, который я получаю (используя http или https через порт 443), на данном этапе равен 401

с использованием (HttpWebResponse response = (HttpWebResponse) myHttpWebRequest.GetResponse ())

Я использую те же учетные данные, которые я использую для ftp на сервер, но я недостаточно знаю о конфигурации rTorrent, чтобы знать, должно ли это гарантировать доступ из веб-запроса. Я не запускаю сервер, поэтому у меня нет доступа к файлам журнала. По сути, я просто хотел бы подтвердить, что приведенный ниже код должен работать или нет. Это метод, который я использую, чтобы попытаться перечислить другие доступные методы (пока я игнорирую сертификат, пока не смогу его запустить)

 private static void ListMethods()
    {
        ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
        System.Net.ServicePointManager.Expect100Continue = false;
        byte[] requestData = Encoding.ASCII.GetBytes("<?xml version=\"1.0\"?><methodCall><methodName>system.listMethods</methodName></methodCall>");

        Uri myUri = new Uri("http://MyIP/RPC2");
        WebRequest request = WebRequest.Create(myUri);
        HttpWebRequest myHttpWebRequest = (HttpWebRequest)request;
        NetworkCredential myNetworkCredential = new NetworkCredential("username", "password");

        CredentialCache myCredentialCache = new CredentialCache();
        myCredentialCache.Add(myUri, "Basic", myNetworkCredential);

        myHttpWebRequest.PreAuthenticate = true;
        myHttpWebRequest.Credentials = myCredentialCache;

        myHttpWebRequest.Method = "POST";
        myHttpWebRequest.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;)";
        myHttpWebRequest.ContentType = "text/xml";
        myHttpWebRequest.ContentLength = requestData.Length;

        using (Stream requestStream = myHttpWebRequest.GetRequestStream())
            requestStream.Write(requestData, 0, requestData.Length);

        string result = null;
        using (HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse())
        {
            using (Stream stream = response.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(stream, Encoding.ASCII))
                    result = reader.ReadToEnd();
            }
        }
        Console.WriteLine("Press any key to continue ...");
        Console.ReadKey();


    }
...