2014-10-27 4 views
0

Я пытаюсь использовать класс WebRequest для получения URL-адреса URL-адреса для загрузки. Он работает, кроме того, когда я ввожу ссылку, такую ​​как https://soundcloud.com/top-bollywood-songs/atif-aslam-mashup-full-song-dj (без расширения последнего сегмента), она выдает System.Net.WebException и возвращает «Удаленный сервер ответил на ошибку: (400)« Плохой запрос ».System.Net.WebException с использованием WebRequest

WebResponse response = (WebResponse)request.GetResponse(); 

Предложения пожалуйста !!!

+1

я нашел интересную информацию здесь: http://stackoverflow.com/questions/702079/why-does-my-httpwebrequest-return-400-bad-request –

+0

Я WebClient бок о бок в моей реализации. Он не поддерживает ссылки без расширения для скачивания. Как я могу получить? @RotemVaron –

+0

Вам просто нужно добавить агент пользователя –

ответ

0

Вы можете добавить User Agent. Ниже приведен рабочий пример:

protected string getHTML(string url) 
{ 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 

      // ****** Add the this line! ****// 
      request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 

      // Set some reasonable limits on resources used by this request 
      request.MaximumAutomaticRedirections = 4; 
      request.MaximumResponseHeadersLength = 4; 
      // Set credentials to use for this request. 
      request.Credentials = CredentialCache.DefaultCredentials; 
      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

      // Get the stream associated with the response. 
      Stream receiveStream = response.GetResponseStream(); 

      // Pipes the stream to a higher level stream reader with the required encoding format. 
      StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); 

      string html = readStream.ReadToEnd(); 
      response.Close(); 
      readStream.Close(); 
      return html; 
} 
+0

. Это заставляет меня использовать 'HttpWebRequest' вместо' WebRequest'. Я могу обойти это так что он может работать независимо от http-соединений –

+0

@devprog, класс WebRequest является абстрактным классом, фактическое поведение экземпляров WebRequest во время выполнения определяется классом потомков, возвращаемым методом Create. Дополнительные сведения о значениях по умолчанию и исключениях см. В документации для классов потомков, таких как HttpWebRequest и FileWebRequest. –

Смежные вопросы