Я пытаюсь загрузить артефакты, используя .net HttpClient, но получаю 400 Bad Request. Я даю почтовый файл в содержании запроса. Это мой код.
Я смог сделать это с помощью команды curl и преобразовал команду curl в код .net.
curl -v -F r = release-folder -F hasPom= false -F g = релиз-группа -F a = артефакт-01 -F v = 1.0 -F p = zip -F файл = @ P: \ test.zip -u имя пользователя: пароль https://localhost:80/nexus/service/local/artifact/maven/content -небезопасно
Пожалуйста, помогите точно определить, что я здесь делаю неправильно.
var handler = new HttpClientHandler();
using (var httpClient = new HttpClient(handler))
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"),
ConfigurationManager.AppSettings["nexusUrl"]))
{
var base64authorization = Convert.ToBase64String
(Encoding.ASCII.GetBytes("username:password"));
request.Headers.TryAddWithoutValidation("Authorization",
$"Basic
{base64authorization}");
var multipartContent = new MultipartFormDataContent();
multipartContent.Add(new StringContent
(ConfigurationManager.AppSettings["repository"]), "r");
multipartContent.Add(new StringContent("false"), "hasPom");
multipartContent.Add(new StringContent
(ConfigurationManager.AppSettings["group"]), "g");
multipartContent.Add(new StringContent("artifact-01), "a");
multipartContent.Add(new StringContent("1.0"), "v");
multipartContent.Add(new StringContent("zip"), "p");
multipartContent.Add(new StringContent("zip"), "e");
multipartContent.Add(new ByteArrayContent(File.ReadAllBytes
(@"P:\test.zip")), "file", Path.GetFileName(@"P:\test.zip"));
request.Content = multipartContent;
var response = await httpClient.SendAsync
(request);
}
}