CSV-файл POST httpclient C # и application / x-www-form-urlencoded - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь реализовать работающий POST-вызов почтальона в консольном приложении ac #, и он дает мне: запрещено 403. Он вызывает API и загружает файл CSV.Это рабочий звонок в почтальоне:

postman part 1

postmnan part2 Я пробую несколько вариантов.Я достиг, пока не получу 403, запрещенный с этим кодом:

    HttpClient c = new HttpClient();
    var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(@"C:\test7.csv"));
    fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
    {
        FileName = "test7.csv"
    };
    fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/csv");

      var parameters = new Dictionary<string, string>
    {
        { "secret", "mypassword" }
    };

    HttpContent DictionaryItems = new FormUrlEncodedContent(parameters);

    MultipartContent content = new MultipartContent();
    //content.Add(formData);
    content.Add(DictionaryItems);
    content.Add(fileContent);
    c.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
    var resultado = c.PostAsync("https://www.apiurl,com", content).Result;

Я думаю, что я не помещаю секрет (пароль) в правильную позицию.Любая помощь?

1 Ответ

0 голосов
/ 13 июня 2018

Я получил ответ.Здесь:

        FileStream stream = File.OpenRead(@"C:\test7.csv");
        byte[] fileBytes = new byte[stream.Length];
        stream.Read(fileBytes, 0, fileBytes.Length);
        stream.Close();
        var byteArrayContent = new ByteArrayContent(fileBytes);
        byteArrayContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/csv");
        HttpClient httpClient = new HttpClient();
        MultipartFormDataContent form = new MultipartFormDataContent();

        form.Add(new StringContent("mypassword"), "secret");
        form.Add(byteArrayContent, "file", "testT.csv");
        HttpResponseMessage response = httpClient.PostAsync("https://www.apiurl.com", form).Result;
        httpClient.Dispose();
...