2012-06-24 8 views
10

Adres URL, poświadczenia działa w interfejsie użytkownika usługi RestClient oraz Curl, gdy otrzymuję błąd "500", gdy uzyskuję dostęp do niego za pomocą Spring RestTemplate .Spring RestTemplate daje błąd "500", ale ten sam adres URL, credentails działa w RestClient i Curl

używam następujący kod:

MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>(); 
map.add("name", user); 
map.add("password", password); 
restTemplate.postForObject(url, request, Employee.class, map); 

Proszę dać mi znać swoje sugestie lub komentarze, aby rozwiązać problem.

+0

Czy Twoja klasa Pracownik naprawdę zacząć z niższego Sprawa E? –

+0

Przepraszam, że to błąd literowy. To jest Employee.class – Kathir

+0

500 to błąd serwera; czy jest jakiś szczegół w treści odpowiedzi lub cokolwiek przydatnego w dzienniku serwera? –

Odpowiedz

7

Proponuję stworzyć swój HttpComponentsClientHttpRequestFactory i przekazać go do RestTemplate jak opisano poniżej:

ClientHttpRequestFactory requestFactory = new  
     HttpComponentsClientHttpRequestFactory(HttpClients.createDefault()); 

RestTemplate restTemplate = new RestTemplate(requestFactory); 

W ten sposób, można uniknąć problemów po stronie serwera (np. w obliczu błędu co de 500) podczas testowania aplikacji.

Miałem ten sam problem, który działał w moim lokalnym środowisku, a nie na serwerze.

Jest to dobra praktyka, aby przejść HttpClients.createDefault() do HttpComponentsClientHttpRequestFactory podczas konstruowania go, ponieważ domyślnie ta fabryka wykorzystuje właściwości systemu do tworzenia HttpClient dla swojej fabryki i które mogą spowodować wiele bólu w rzeczywistym środowisku serwera. Możesz również przekazać swój niestandardowy HttpClient.

+0

cześć, co to jest obiekt HttpClients proszę? Nie mogę znaleźć żadnej zależności od użytkownika, która pozwoli mi to zaimportować. Próbuję użyć RestTemplateXhrTransport, aby połączyć się z websocket i otrzymuję powyższy błąd. dzięki –

+0

Przepraszamy! Trochę za późno na odpowiedź, ale o ile pamiętam, należał do jednego z następujących projektów (w oparciu o priorytet). Możesz wypróbować każdą i sprawdzić, czy dostaniesz błąd kompilatora; \t org.Spring Framework \t wiosna-web \t .... Albo \t org.apache.httpcomponents \t httpclient \t .... Albo \t commons-httpclient \t commons-httpclient \t ... Youness

+0

Czy możesz wyjaśnić, dlaczego to rozwiązanie działa? –

0

Poniżej działa dobrze

Dla post:

restTemplate.postForObject (url, parametersMap, Employee.class);

url: String - reszta api URL parametersMap - MultiValueMap Pracownik - obiekt, który musi zostać przekształcony z odpowiedzi JSON

Powiązane problemy