Я вызываю 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