通过.net使用uTorrent Web API



我正在尝试使用Web API从uTorrent获得种子列表。获取所需的令牌运行正常:

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));

我得到的是"Error 400 Bad request"

我已尝试手动获取令牌。在浏览器页面"http://localhost:30303/gui/?list=1&token=3LemfrO_-A-SNBXlnQ2QcQWTYydx7qOqKb1W1S54JJW74Ly3EYGgu0xQSU4AAAAA"打开,因为它应该,但在c#与相同的链接没有任何变量,我仍然得到错误400。有趣的是,如果关闭令牌身份验证,WebClient无论是否使用

都可以完美地加载页面。
"&token=3LemfrO_-A-SNBXlnQ2QcQWTYydx7qOqKb1W1S54JJW74Ly3EYGgu0xQSU4AAAAA"

但是令牌认证默认是启用的,所以我和任何应用程序都应该使用它。是的,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感知类转到以下链接(使用CookieContainer与WebClient类),因为web客户端不支持cookie。

您应该从请求中保存cookie

WebRequest request = WebRequest.Create("http://localhost:" + port + "/gui/token.html");
CookieContainer cookies = new CookieContainer();
(request as HttpWebRequest).CookieContainer = cookies;

当使用相同的令牌时,在每个其他请求uTorrent时使用它:

request = WebRequest.Create("http://localhost:" + port + "/gui/?list=1&token=" + token);
(request as HttpWebRequest).CookieContainer = cookies;

我有一个简单的三步建议:

  1. 当您使用令牌使用浏览器时,使用Fiddler2来分析服务器和浏览器之间的HTTP流量

  2. 打开你的c#应用程序,使用Fiddler2来分析服务器和你的应用程序之间的HTTP流量。

  3. 比较浏览器的HTTP请求和响应与c#应用程序的请求和响应。如果你看到一个显著的差异,很有可能是问题。

相关内容

  • 没有找到相关文章

最新更新