Это связано с другим открытым вопросом моего . Пока фактических ответов нет, dtb подтолкнуло меня к этому пути, поэтому, если это принесет плоды, я приму его ответ.
Я генерирую URL объявления для BitTorrent-трекера в каком-то (довольно волосатом) коде C #.
Конечный результат выглядит примерно так:
http://208.106.250.207:8192/announce?info_hash=-%CA8%C1%C9rDb%ADL%ED%B4%2A%15i%80Z%B8%F%C&peer_id=01234567890123456789&port=6881&uploaded=0&downloaded=0&left=0&compact=0&no_peer_id=0&event=started
Если я скопирую и вставлю это в адресную строку, я получу правильный ответ от трекера. Однако мой код возвращает сообщение об ошибке (неверный info_hash).
Код, отправляющий запрос:
... Code building the URI ...
String uri = BuildURI(); //This results in the above URI string.
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri);
req.Proxy = new WebProxy(); //Some examples online suggest this is required, so WARNING: here be voodoo (determine if necessary later)
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
... Code parsing the stream ...
Если я отлаживаю и извлекаю строковую версию req.RequestUri, я получаю:
http://208.106.250.207:8192/announce?info_hash=-Ê8ÁÉrDbLí´*iZ¸%25F%25C&peer_id=01234567890123456789&port=6881&uploaded=0&downloaded=0&left=0&compact=0&no_peer_id=0&event=started
Я не могу точно сказать, что отправляется на трекер "на линии", но похоже, что я делаю что-то глупое в отношении URI. Кто-нибудь знает что?