Http-запрос на загрузку файла с удаленного сервера

Я пытаюсь перевести следующую команду curl

curl --location --request GET "https://xxx.xxxx.xxx/artifacts?session=016e1f70-d9da-41bf-b93d-80e281236c46&path=/home/gauntlet_gameye/LinuxServer/Game/Saved/Logs/Game.log" -H "Authorization:Bearer xxxx" -H "Accept:application/json" --output C:\Temp\Game.log

К коду С#, и у меня есть следующее

string SessionId = "016e1f70-d9da-41bf-b93d-80e281236c46";
string Token = "xxxx"; 
string FilePath = "/home/gauntlet_gameye/LinuxServer/Game/Saved/Logs/Game.log";  

string Endpoint = string.Format("https://xxx.xxxx.xxx/artifacts?session = {0}&path = {1}", SessionId, FilePath);            
HttpRequestMessage HttpRequestMsg = new HttpRequestMessage();
HttpRequestMsg.RequestUri = new Uri(Endpoint);
HttpRequestMsg.Method = HttpMethod.Get;
HttpRequestMsg.Headers.Add("Accept", "application/json");
HttpRequestMsg.Headers.Add("Authorization", string.Format("Bearer {0}", Token));

HttpRequestMsg.Content = new StringContent(string.Format("--output {0}", OutFilePath), Encoding.UTF8, "application/json");

using (HttpClient Client = new HttpClient())
{
    var HttpResponseTask = Client.SendAsync(HttpRequestMsg);
}

Но это дает мне следующую информацию об исключении

Cannot send a content-body with this verb-type.

Гм, --output C:\Temp\Game.log — это инструкция для приложения curl относительно того, в какой файл оно должно передать ответ. Это не тело запроса (это то, что вы пытаетесь сделать с помощью HttpRequestMsg.Content).

ProgrammingLlama 20.11.2022 15:54

@ProgrammingLlama хорошо, так как же это сделать?

0xBADF00 20.11.2022 15:56

Вы читаете ответ и записываете его в файл.

CodeCaster 20.11.2022 15:57

Ах извините да ок, я понял спасибо.

0xBADF00 20.11.2022 16:00
Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
0
4
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

--location и --output не поддерживаются параметрами C#.

HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://xxx.xxxx.xxx/artifacts?session=016e1f70-d9da-41bf-b93d-80e281236c46&path=/home/gauntlet_gameye/LinuxServer/Game/Saved/Logs/Game.log");

request.Headers.Add("Authorization", "Bearer xxxx");
request.Headers.Add("Accept", "application/json");

HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();

Источник: Преобразование команд curl в C#

Другие вопросы по теме