Nie znalazłem żadnego przykładu, jak rozwiązać mój problem, więc chcę prosić Cię o pomoc. Nie mogę po prostu wysłać żądania POST za pomocą obiektu RestTemplate w JSON
Za każdym razem, gdy dostaję:
org.springframework.web.client.HttpClientErrorException: 415 Unsupported Media Type
Używam RestTemplate w ten sposób:
...
restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> list = new ArrayList<HttpMessageConverter<?>>();
list.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(list);
...
Payment payment= new Payment("Aa4bhs");
Payment res = restTemplate.postForObject("http://localhost:8080/aurest/rest/payment", payment, Payment.class);
Co jest moją winą?
Odpowiedzi:
Ta technika zadziałała dla mnie:
mam nadzieję, że to pomoże
źródło
.put()
jestvoid
!postForEntity(url, entity, String.class)
utworów w miejsceput(url, entity)
Napotkałem ten problem podczas próby debugowania punktu końcowego REST. Oto podstawowy przykład użycia klasy RestTemplate Springa do wykonania żądania POST, którego użyłem. Sporo czasu zajęło mi zebranie kodu z różnych miejsc w celu uzyskania działającej wersji.
Konkretny parser JSON, w którym mój punkt końcowy korzystał z potrzebnych podwójnych cudzysłowów wokół nazw pól, dlatego uniknąłem podwójnych cudzysłowów w moim ciągu requestJson.
źródło
Używałem szablonu REST z JSONObjects w następujący sposób:
źródło
Jak określono tutaj , myślę, że musisz dodać
messageConverter
dlaMappingJacksonHttpMessageConverter
źródło
Jeśli używasz Spring 3.0, prostym sposobem na uniknięcie org.springframework.web.client.HttpClientErrorException: 415 Unsupported Media Type , jest dołączenie plików jar jackson do ścieżki klas i użycie
mvc:annotation-driven
elementu config. Jak określono tutaj .Wyciągałem włosy, próbując dowiedzieć się, dlaczego aplikacja mvc-ajax działała bez specjalnej konfiguracji dla
MappingJacksonHttpMessageConverter
. Jeśli dokładnie przeczytałeś artykuł, do którego dołączyłem powyżej:źródło
Błąd „415 Nieobsługiwany typ nośnika” informuje, że serwer nie akceptuje żądania POST. Twoje żądanie jest absolutnie w porządku, to serwer, który jest źle skonfigurowany.
MappingJacksonHttpMessageConverter
automatycznie ustawi nagłówek typu content-type żądania naapplication/json
i domyślam się, że twój serwer to odrzuca. Nie powiedziałeś nam jednak nic o konfiguracji serwera, więc nie mogę Ci w tym doradzić.źródło
Robię w ten sposób i to działa.
// Tutaj podaj nagłówki
Mam nadzieję że to pomoże
źródło
Pojawił się ten problem i używam Springa RestTemplate na kliencie i Spring Web na serwerze. Oba interfejsy API mają bardzo słabe raportowanie błędów, co sprawia, że ich programowanie jest niezwykle trudne.
Po wielu godzinach próbowania wszelkiego rodzaju eksperymentów doszedłem do wniosku, że problem jest spowodowany przekazaniem zerowej referencji dla treści POST zamiast oczekiwanej listy. Zakładam, że RestTemplate nie może określić typu zawartości z obiektu o wartości null, ale nie narzeka na to. Po dodaniu poprawnych nagłówków zacząłem otrzymywać inny wyjątek po stronie serwera w Spring przed wejściem do mojej metody usługi.
Poprawka polegała na przekazaniu pustej listy od klienta zamiast wartości null. Nie są wymagane żadne nagłówki, ponieważ domyślny typ zawartości jest używany dla obiektów niezerowych.
źródło
Ten kod działa dla mnie;
źródło
Jeśli nie chcesz przetwarzać odpowiedzi
Jeśli potrzebujesz odpowiedzi w procesie
źródło
U mnie wystąpił błąd podczas tej konfiguracji:
AndroidAnnotations
Spring Android RestTemplate Module
i ...GsonHttpMessageConverter
Adnotacje na Androida mają pewne problemy z tym przekonwertowanym na generowanie
POST
żądania bez parametru. Po prostu parametrnew Object()
rozwiązał to za mnie.źródło
Po co pracować ciężej niż musisz?
postForEntity
akceptuje prostyMap
obiekt jako dane wejściowe. Poniższe działa dobrze dla mnie podczas pisania testów dla danego punktu końcowego REST na wiosnę. Uważam, że jest to najprostszy możliwy sposób na wykonanie żądania JSON POST na wiosnę:źródło
Jeśli nie chcesz samodzielnie mapować JSON, możesz to zrobić w następujący sposób:
źródło
Spróbowałem w następujący sposób w butach wiosennych:
źródło