Метод веб-клиента DownloadFileAsync отображает запрещенную ошибку

#vb.net #visual-studio-2010

#vb.net #visual-studio-2010

Вопрос:

Я загружал файл с помощью этого метода в течение последних двух лет, но теперь он выдает эту запрещенную ошибку (403). Это адрес:http://www.nseindia.com/content/historical/DERIVATIVES/2014/JUL/fo04JUL2014bhav.csv.zip. И это код :

 wcNseFut.DownloadFileAsync(uriNseFut, strFullFileName)
  

strFullFileName — это путь для сохранения файла. Я много пробовал, но это еще не решено. Пожалуйста, помогите.
Полный код :

  If CheckValidations() = True Then
            If CheckNet() Then
                Dim strFullFileName As String

                dtBhav = CDate(dtBhavcopyDate.Value)
                btnNseFuturesDownload.Enabled = False
                btnNseFuturesDownload.Text = "Downloading....."

                AddHandler wcNseFut.DownloadFileCompleted, AddressOf wcNseFut_DownloadFileCompleted
                AddHandler wcNseFut.DownloadProgressChanged, AddressOf wcNseFut_DownloadProgressChanged

                MDIStockMIS.UStatusBar.Panels("Text").Text = ""
                MDIStockMIS.UStatusBar.Panels("Text").Text = "Downloading file ..........."

                ''-------- Download NSE future file
                ''-------- http://www.nseindia.com/content/historical/DERIVATIVES/2014/APR/fo11APR2014bhav.csv.zip
                Dim uriNseFut As New Uri(NseFuturesFTPAddress(dtBhav))

                strFullFileName = ""
                strFullFileName = m_strPathEQ amp; "" amp; BHAVCOPY_NSE_FO_FOLDER amp; ".zip"
                DeleteFile(strFullFileName, False)
                wcNseFut.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
                wcNseFut.DownloadFileAsync(uriNseFut, strFullFileName)
            End If
        Else
            ShowUltraMessage(Nothing, "Please select the path and enter a valid date.", "Error", MessageBoxButtons.OK, _
                          MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, "", "", _
                          "Check conditions", "Stock MIS")
        End If
  

Комментарии:

1. 403 запрещено означает, что веб-сайт не позволяет вам загружать файл. Можете ли вы загрузить файл из веб-браузера? Я предполагаю, что веб-сайт теперь блокирует ваше приложение

2. да, я могу загрузить файл из браузера.

3. Возможно, настройте пользовательский агент для webclient, чтобы веб-сайт думал, что это браузер, загружающий файл. wcNseFut. Заголовки. Добавить («user-agent», «Mozilla/4.0 (совместимый; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)»)

4. Я добавил заголовок, о котором вы говорили, но теперь выдает ошибку forbidden 404

5. Используете ли вы прокси-сервер?

Ответ №1:

Предложение @kentucker добавить user-agent в заголовок webclient было очень близко к решению. Я просто использовал fiddler для получения правильного пользовательского агента, добавил некоторые сетевые учетные данные, а затем все заработало нормально.