c# - 通过 .NET 使用 uTorrent Web API

标签 c# .net token asp.net-web-api utorrent

我正在尝试使用 Web API 从 uTorrent 获取种子列表.获取所需的 token 就OK了:

WebClient client = new WebClient() { Credentials = new NetworkCredential(UserName, pass) };
StreamReader Reader = new StreamReader(client.OpenRead("http://localhost:" + port + "/gui/token.html"));
string token = Reader.ReadToEnd();
token = token.Split('>')[2].Split('<')[0]; 
// token is now something like 3LemfrO_-A-SNBXlnQ2QcQWTYydx7qOqKb1W1S54JJW74Ly3EYGgu0xQSU4AAAAA

但是当我尝试使用它来获取种子列表时:

Reader = new StreamReader(client.OpenRead("http://localhost:" + port + "/gui/?list=1&token=" + token));

我得到的只是“错误 400 错误请求”。

我试过手动获取 token 。在浏览器页面“http://localhost:30303/gui/?list=1&token=3LemfrO_-A-SNBXlnQ2QcQWTYydx7qOqKb1W1S54JJW74Ly3EYGgu0xQSU4AAAAA”中正常打开,但在 C# 中没有任何变量的相同链接我仍然收到错误 400。 有趣的是,如果关闭 token 身份验证,WebClient 加载页面可以完美地使用和不使用

"&token=3LemfrO_-A-SNBXlnQ2QcQWTYydx7qOqKb1W1S54JJW74Ly3EYGgu0xQSU4AAAAA"

但默认情况下启用 token 身份验证,因此我和任何应用程序都应该使用它。 是的,WebRequest/HttpWebRequest 也没有帮助。

附言对不起我的英语,我从来没能让它正常工作

最佳答案

你必须从请求中保存cookie

Classes.CookieAwareWebClient client = new Classes.CookieAwareWebClient() { Credentials = new NetworkCredential("shehab", "shehab") };
StreamReader Reader = new StreamReader(client.OpenRead("http://localhost:" + "8080" + "/gui/token.html"));
string token = HtmlRemoval.StripTagsRegexCompiled(Reader.ReadToEnd());
MessageBox.Show(token);

Reader = new StreamReader(client.OpenRead("http://localhost:" + "8080" + "/gui/?list=1&token=" + token));
MessageBox.Show(Reader.ReadToEnd());

对于 cookie 感知类,请转到以下链接(Using CookieContainer with WebClient class),因为 Web 客户端不支持 cookie。

关于c# - 通过 .NET 使用 uTorrent Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068771/

相关文章:

c# - 通过循环动态分配按钮文本

c# - 我怎样才能解决这个糟糕的 WPF ListView SelectedItems 性能问题?

c# - WPF DataGrid HeaderTemplate 神秘填充

c# - 如何确定var的大小?

c# - C# 中的 Luatable 等价物?

c++ - C++ 中矩阵的用户输入

javascript - 从javascript传递到web api 2时如何隐藏或保护 token

javascript - 根据初始浏览器请求将 JWT token 发送到服务器(使用本地存储)

java - 在java中的c#脚本中访问信息

c# - 如何为 SonarQube.Scanner.MSBuild.exe 提供参数?