Я пытаюсь реализовать рабочий вызов POST почтальона в консольном приложении C#, и он дает мне: запрещено 403. Он вызывает API и загружает файл CSV. Это рабочий звонок в почтальоне:
Пробую несколько вариантов. Я добился этого до тех пор, пока не получил 403 запрета с этим кодом:
HttpClient c = new HttpClient();
var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(@"C:\test7.csv"));
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "test7.csv"
};
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/csv");
var parameters = new Dictionary<string, string>
{
{ "secret", "mypassword" }
};
HttpContent DictionaryItems = new FormUrlEncodedContent(parameters);
MultipartContent content = new MultipartContent();
//content.Add(formData);
content.Add(DictionaryItems);
content.Add(fileContent);
c.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
var resultado = c.PostAsync("https://www.apiurl,com", content).Result;
Я думаю, что я не помещаю секрет (пароль) в правильное место. Любая помощь?
Спасибо, у меня есть ответ. Посмотрите ниже





У меня есть ответ. Здесь:
FileStream stream = File.OpenRead(@"C:\test7.csv");
byte[] fileBytes = new byte[stream.Length];
stream.Read(fileBytes, 0, fileBytes.Length);
stream.Close();
var byteArrayContent = new ByteArrayContent(fileBytes);
byteArrayContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/csv");
HttpClient httpClient = new HttpClient();
MultipartFormDataContent form = new MultipartFormDataContent();
form.Add(new StringContent("mypassword"), "secret");
form.Add(byteArrayContent, "file", "testT.csv");
HttpResponseMessage response = httpClient.PostAsync("https://www.apiurl.com", form).Result;
httpClient.Dispose();
Просто дикая догадка - у вас есть авторизация на вашем сервере? Если да, то как вы отреагируете на это в своем запросе?