Проверьте, является ли URL потоком в.NET C#

Что является лучшим способом для меня взять URL как: http://foobar.com/foo.torrent и проверка, если это действительно - поток, не страница HTML или что-то еще забавное. Предложения? Спасибо :)

12
задан Charles 6 December 2013 в 22:05
поделиться

7 ответов

Если вы хотите немного изучить C ++, вы можете сделать внешний вызов библиотеки libtorrent с помощью P / Invoke. Я уверен, что у него есть способ проверки файлов.

0
ответ дан 2 December 2019 в 07:20
поделиться

В дополнение к хорошему ответу, предоставленному bobince, вы также можете взглянуть на реализацию C # с открытым исходным кодом monotorrent . Они загружают весь .torrent-файл и после этого разбирают Bencode (см .: http://anonsvn.mono-project.com/viewvc/trunk/bitsharp/src/MonoTorrent/MonoTorrent.Common/Torrent.cs ] строки 611ff)

1
ответ дан 2 December 2019 в 07:20
поделиться

Единственный способ узнать, действительно ли это торрент-файл, - это загрузить его и проверить, является ли это торрент-файлом .

4
ответ дан 2 December 2019 в 07:20
поделиться

Вероятно, лучше всего загрузить и проверить его и / или проверить тип содержимого application / x-bittorrent .

3
ответ дан 2 December 2019 в 07:20
поделиться

Прочтите спецификацию торрент-файла, затем напишите приложение C #, чтобы загрузить содержимое URL-адреса и посмотреть, соответствует ли оно правилам, указанным в спецификации.

1
ответ дан 2 December 2019 в 07:20
поделиться

Чтобы проверить тип ресурса, не загружая его, используйте запрос HEAD:

WebRequest request= WebRequest.Create("http://foobar.com/foo.torrent");
request.Method= "HEAD";
WebResponse response= request.GetResponse();
if (response.Headers.Get("Content-Type")=="application/x-bittorrent") {
    ...

Однако тип application / x- BitTorrent может быть не настроен на некоторых серверах, поэтому вы можете получить вместо него application / octet-stream или даже text / plain , если вам не повезло. Если вам нужно это учитывать, все, что вы можете сделать, это получить файл с помощью обычного запроса GET и посмотреть, сможете ли вы его декодировать.

Формат файла BitTorrent основан на формате под названием «bencode». Вот библиотека .NET, которая утверждает, что ее обрабатывает. Вы можете догадаться, что любой файл, который является допустимым bencode, является торрент-файлом, но если вы хотите убедиться, что вы можете посмотреть сопоставление, которое он декодирует, и проверить свойства info и announce .

11
ответ дан 2 December 2019 в 07:20
поделиться

Я бы использовал библиотеку MonoTorrent. В частности, вы могли бы использовать статический метод

Torrent.TryLoad(Uri url, string location, out Torrent torrent)

который вернет булево значение, указывающее, указывает ли параметр url на действительный торрент-файл.

1
ответ дан 2 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: