REST API json przesłanie pliku

0

Cześć,
całkiem sprawnie sobie radzę z obsługą REST w c# ale trafiłem na ścianę.
Muszę przesłać plik i inne pola wg specyfikacji poniższej.
Otrzymuję błąd BadRequest 400. Może podpowiecie mi co robię źle?
Mam przeczucie że zawartość pliku powninno się przekazać inaczej ale nie wiem jak :(

HttpWebRequest request = GetHttpWebRequest("/api/offers/imports", "POST");
                request.MediaType = "multipart/form-data input";
                request.ContentType = "multipart/form-data input";

                try
                {
                    string text = null;
                    CSVOffer offer = new CSVOffer();
                    offer.import_mode = "REPLACE";
                    offer.with_products = false;
                    offer.file =  Offers.GetFile(shop); // zawartość pliku CSV


                    Stream dataStream = request.GetRequestStream();
                    string jsonEncodedParams = Bll.RESTHelper.ToJson(offer);
                    System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();

                    byte[] byteArray = encoding.GetBytes(jsonEncodedParams);

                    dataStream.Write(byteArray, 0, byteArray.Length);
                    dataStream.Close();

                    using (WebResponse webResponse = request.GetResponse())
                    {
                        Stream responseStream = webResponse.GetResponseStream();
                        StreamReader reader = new StreamReader(responseStream);
                        text = reader.ReadToEnd();
                    }
                   
                }
                catch (WebException ex)
                {

Specyfikacja metody tutaj:

screenshot-20200917155330.png

0

To sa te momenty gdy REST (aka "prosty" standard) jest gwałcony, dawno przestał być REST-em, i coś, co zawsze było względnie proste (upload), już nie jest.

0
  1. Czy /api/offers/imports istnieje? (może routing API wygląda inaczej?).
  2. Czy dobrze skonfigurowałeś HttpWebRequest? https://stackoverflow.com/questions/4015324/how-to-make-an-http-post-web-request
  3. W jakich przypadkach API endpoint zwraca 400? (To Twoje API?)
  4. Czy dobrze parsujesz CSV -> JSON? Przy debugowaniu, co daje Ci jsonEncodedParams?
  5. Czy obiekt offer jest duży? Może źle pamiętam, ale chyba są jakieś ograniczenia wielkości wysyłanego byteArray w żądaniu?
  6. Jak wspomniał @szydlak, chyba lepiej, łatwiej i wygodniej korzystać z HttpClient, byle poprawnie.
0

Dziękuję za sugestie.
Wiem, że to nadmiar oczekiwań z mojej strony ale możecie dla podanej specyfikacji napisać fragment kodu, który by to ogarnął?
Nie radzę sobie :(

Dziękuję z góry za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1