Пустой контент в ответе на вызов POST APIC#

Место общения программистов C#
Ответить
Anonymous
 Пустой контент в ответе на вызов POST API

Сообщение 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}");
}
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... t-api-call
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»