Простой почтовый запрос с файлом и параметрами - PullRequest
2 голосов
/ 28 января 2020

У меня есть этот код для отправки запроса в API Local Courier.

public async Task ImportAwbIntegrat()
        {


            string fisier = File.ReadAllText(@"F:\Read\model.csv");

            var values = new Dictionary<string, string>
            {
                { "username", "clienttest" },
                { "client_id", "70321588" },
                {"user_pass", "testing" },
                {"fisier", fisier }
            };


            HttpClient client = new HttpClient();

            try
            {
                var content = new FormUrlEncodedContent(values);
                string methodurl = "https://www.selfawb.ro/import_awb_integrat.php";

                var response = await client.PostAsync(methodurl, content);
                if (!response.IsSuccessStatusCode)
                {
                    Console.WriteLine(response);
                }

                var responseString = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseString);
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                Console.WriteLine(message); ;
            }
        }

Запрос работает,

response value = {Method: POST, RequestUri: 'https://www.selfawb.ro/import_awb_integrat.php', Version: 1.1, Content: System.Net.Http.FormUrlEncodedContent, Headers:
{
  Content-Type: application/x-www-form-urlencoded
  Content-Length: 442
}}

, но внутри responseString у меня есть это сообщение: "Файл не был загружен. Он просит вас, попробуйте еще раз. "

Я думаю, это происходит из-за того, что серверу нужен файл .csv со значением, разделенным; но я посылаю ему значения из файла, а не сам файл.

1 Ответ

1 голос
/ 28 января 2020

Попробуйте этот код

public async Task ImportAwbIntegrat()
{
    string fisier = File.ReadAllText(@"F:\Read\model.csv");

    var values = new Dictionary<string, string>
    {
        { "username", "clienttest" },
        { "client_id", "111111" },
        {"user_pass", "testing" }
    };          

    var image = File.ReadAllBytes(@"F:\Read\model.csv");

    using (var client = new HttpClient())
    {
        using (var content =
            new MultipartFormDataContent())
        {
            content.Add(new StreamContent(new MemoryStream(image)), "fisier", "model.csv");
            foreach (KeyValuePair<string, string> param in values)
            {
                content.Add(new StringContent(param.Value), $"\"{param.Key}\"");
            }

            using (var response = await client.PostAsync("https://www.selfawb.ro/import_awb_integrat.php", content))
            {
                var input = await response.Content.ReadAsStringAsync();
                var responseString = await response.Content.ReadAsStringAsync();
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...