Ваш код полностью в порядке, но вы часто обнаружите, что эта проблема больше связана с источником, из которого вы пытаетесь загрузить файл, а не с Go.
. была та же проблема с другими инструментами / языками, потому что хост, к которому вы пытаетесь обратиться, продолжает перенаправлять вас из-за недопустимого свойства заголовка 'User-Agent' . Это часто бывает, когда вы хотите разрешить загрузку ваших файлов только из «браузеров», а не для сканирования, автоматических сценариев и т. Д. c.
С помощью Go вы можете добавить свойство заголовка с помощью req.Header.Set("User-Agent", "<some-user-agent-value>")
, перед отправкой запроса. Вы должны создать экземпляр request
, установить заголовок и выполнить его с http.Client{}
и client.Do(req)
.
Например:
link := "http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip"
req, err := http.NewRequest("GET", link, nil)
if err != nil {
panic(err)
}
req.Header.Set("User-Agent", "Mozilla/4.0") // Doesn't even have to be a full
// proper user agent string
client := &http.Client{}
resp, err := client.Do(req)
Подробнее можно прочитать в 1040 * http pkg docs гласит:
"Для контроля над заголовками клиентов HTTP, политикой перенаправления и другими настройками создайте клиента ..."
Вот также http.reqeust и http.client документы.
Подробнее об этом общем вы можете узнать, например, Документы HTTP Mozilla , а также множество других замечательных документов и ресурсов.
Кстати. ZIP-архив, который вы пытаетесь загрузить, кажется недействительным. : -)