【问题标题】:Simple Post Request with file and parameters带有文件和参数的简单发布请求
【发布时间】:2020-01-28 12:14:57
【问题描述】:

我有这段代码,用于向 Local Courier API 发出发布请求。

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 文件,其值由 ; 分隔但我从文件中发送值,而不是文件本身。

【问题讨论】:

  • 您认为还是实际情况如此?您的 API 是否需要 .csv 文件?您应该查看 API 的文档,然后相应地设计您的逻辑。

标签: c# .net-4.6.1


【解决方案1】:

试试这个代码

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();
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-31
    • 2014-11-14
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多