Я экспериментирую с подключением к серверу 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();
}