Я вызываю API для отправки файла и получаю ответ 200, но содержимое пусто. Я также пробовал использовать RestSharp, но результат тот же. Однако запрос через Postman успешен. Также есть вызов checkStatus, и он нормально работает через код C#, но при отправке файла возникает проблема.
Вот мой код:
static async Task SubmitFileToRestApi(string apiUrl, string permitNumber, string securityKey, string remoteFileName, string localFileName)
{
try
{
using (HttpClient httpClient = new HttpClient())
using (var form = new MultipartFormDataContent())
using (var fileStream = new FileStream(localFileName, FileMode.Open, FileAccess.Read))
{
form.Add(new StringContent("savenic"), "apicall");
form.Add(new StringContent(permitNumber), "permit_nbr");
form.Add(new StringContent(securityKey), "sec_key");
form.Add(new StringContent(Path.GetFileName(localFileName)), "filename");
var fileContent = new StreamContent(fileStream);
fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
form.Add(fileContent, "file", Path.GetFileName(localFileName));
// Log the request content
Console.WriteLine("Request Content:");
foreach (var content in form)
{
Console.WriteLine($"{content.Headers.ContentDisposition}");
}
var response = await httpClient.PostAsync(apiUrl, form);
var responseContent = await response.Content.ReadAsStringAsync();
// Log response status and headers
Console.WriteLine("Response Status: " + response.StatusCode);
foreach (var header in response.Headers)
{
Console.WriteLine($"{header.Key}: {string.Join(", ", header.Value)}");
}
Console.WriteLine($"Response: {responseContent}");
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred while submitting the file: {ex.Message}");
if (ex.InnerException != null)
{
Console.WriteLine($"Inner exception: {ex.InnerException.Message}");
}
}
}
Вот код RestSharp
static async Task SubmitFileToRestApi(string apiUrl, string permitNumber, string securityKey, string remoteFileName, string localFileName)
{
// Bypass SSL certificate validation (useful for testing with self-signed certificates)
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
var client = new RestClient(apiUrl);
var request = new RestRequest("", Method.Post);
request.AddParameter("apicall", "savenoc");
request.AddParameter("permit_nbr", permitNumber);
request.AddParameter("sec_key", securityKey);
request.AddFile("file", localFileName, "application/pdf");
request.AddParameter("filename", Path.GetFileName(localFileName));
try
{
var response = await client.ExecuteAsync(request);
// Log response details
Console.WriteLine("Response Status: " + response.StatusCode);
Console.WriteLine("Response Content: " + response.Content);
Console.WriteLine("Response Error Message: " + response.ErrorMessage);
Console.WriteLine("Response Headers: ");
foreach (var header in response.Headers)
{
Console.WriteLine($"{header.Name}: {header.Value}");
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred while submitting the file: {ex.Message}");
}
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... t-api-call
Пустой контент в ответе на вызов POST API ⇐ C#
Место общения программистов C#
1718919821
Anonymous
Я вызываю API для отправки файла и получаю ответ 200, но содержимое пусто. Я также пробовал использовать RestSharp, но результат тот же. Однако запрос через Postman успешен. Также есть вызов checkStatus, и он нормально работает через код C#, но при отправке файла возникает проблема.
Вот мой код:
static async Task SubmitFileToRestApi(string apiUrl, string permitNumber, string securityKey, string remoteFileName, string localFileName)
{
try
{
using (HttpClient httpClient = new HttpClient())
using (var form = new MultipartFormDataContent())
using (var fileStream = new FileStream(localFileName, FileMode.Open, FileAccess.Read))
{
form.Add(new StringContent("savenic"), "apicall");
form.Add(new StringContent(permitNumber), "permit_nbr");
form.Add(new StringContent(securityKey), "sec_key");
form.Add(new StringContent(Path.GetFileName(localFileName)), "filename");
var fileContent = new StreamContent(fileStream);
fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
form.Add(fileContent, "file", Path.GetFileName(localFileName));
// Log the request content
Console.WriteLine("Request Content:");
foreach (var content in form)
{
Console.WriteLine($"{content.Headers.ContentDisposition}");
}
var response = await httpClient.PostAsync(apiUrl, form);
var responseContent = await response.Content.ReadAsStringAsync();
// Log response status and headers
Console.WriteLine("Response Status: " + response.StatusCode);
foreach (var header in response.Headers)
{
Console.WriteLine($"{header.Key}: {string.Join(", ", header.Value)}");
}
Console.WriteLine($"Response: {responseContent}");
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred while submitting the file: {ex.Message}");
if (ex.InnerException != null)
{
Console.WriteLine($"Inner exception: {ex.InnerException.Message}");
}
}
}
Вот код RestSharp
static async Task SubmitFileToRestApi(string apiUrl, string permitNumber, string securityKey, string remoteFileName, string localFileName)
{
// Bypass SSL certificate validation (useful for testing with self-signed certificates)
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
var client = new RestClient(apiUrl);
var request = new RestRequest("", Method.Post);
request.AddParameter("apicall", "savenoc");
request.AddParameter("permit_nbr", permitNumber);
request.AddParameter("sec_key", securityKey);
request.AddFile("file", localFileName, "application/pdf");
request.AddParameter("filename", Path.GetFileName(localFileName));
try
{
var response = await client.ExecuteAsync(request);
// Log response details
Console.WriteLine("Response Status: " + response.StatusCode);
Console.WriteLine("Response Content: " + response.Content);
Console.WriteLine("Response Error Message: " + response.ErrorMessage);
Console.WriteLine("Response Headers: ");
foreach (var header in response.Headers)
{
Console.WriteLine($"{header.Name}: {header.Value}");
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred while submitting the file: {ex.Message}");
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78649697/empty-content-in-the-response-for-a-post-api-call[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия