Private Git Repo - исключение, вызывающее «DownloadFile» с аргументом (ами) «2»: «Запрос был прерван: соединение было неожиданно закрыто». - PullRequest
0 голосов
/ 09 января 2019

В настоящее время пытаюсь загрузить файл из одного из моих личных репозиториев Git в Powershell, вот мой код:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; 
$wc = New-Object -TypeName System.Net.WebClient; 
$wc.Headers.Add('Authorization','token ------------my token------------'); 
$wc.DownloadFile('https://github.com/Private/Repository/blob/master/hellothere.bat', '%~dp0hello_there.bat');

Я очень новичок в powershell, поэтому не уверен, так ли это, но до сих пор работал для меня, пытаясь загрузить из общедоступных репозиториев Git. Я предполагаю, что это происходит из-за некоторой проблемы аутентификации, так как соединение закрывается, но я не вижу, что не так с синтаксисом, и я определенно использую правильный токен.

Любая помощь, чтобы получить эту работу приветствуется.

1 Ответ

0 голосов
/ 14 января 2019

Здесь нужно разобраться с двумя основными вопросами:

  1. Заголовок Authorization должен иметь следующий формат:
Authorization: bearer ${token}
  1. Проблема была связана с тем, что GitHub возвратил 404 Not Found:
HTTP/1.1 404 Not Found
Date: Mon, 14 Jan 2019 16:48:15 GMT
Content-Type: text/html; charset=utf-8
Server: GitHub.com

Чтобы решить эту проблему, вы должны убедиться, что получили URL-адрес raw содержимого файла, например:

enter image description here

Тогда все должно работать нормально. Финальный код идентичен вашему, просто настройте заголовок.

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; 
$wc = New-Object -TypeName System.Net.WebClient; 
$wc.Headers.Add('Authorization','bearer $token '); 
$wc.DownloadFile('https://github.com/path/to/raw/file', '/path/to/output');

Обновление

Если вы хотите загрузить двоичные файлы, то URL-адрес должен слегка измениться, поскольку двоичные файлы хранятся в другом месте. Примечание для будущих читателей, это может измениться.

В настоящее время формат у меня есть:

https://raw.githubusercontent.com/$USERNAME/$REPO_NAME/$BRANCH_NAME/$BINARY_NAME

Или в моем случае это было:

https://raw.githubusercontent.com/JuxhinDB/Test/master/Test.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...