2013-03-27 12 views
8

Tworzę klienta REST w Javie z RestTemplate z Spring Framework.Jak otrzymać odpowiedź STRING z RestTemplate postForLocation?

Wszystko jest w porządku, dopóki nie muszę zrobić wpisu z postForLocation.

Usługa internetowa, do której mam dostęp, zwraca json z informacjami o POST ACTION.

W PHP jest w porządku, ale naprawdę nie rozumiem, jak to zrobić w Javie z RestTemplate.

public String doLogin() 
    { 
     Map<String, String> args = new HashMap<String, String>(); 

     args.put("email", AUTH_USER); 
     args.put("token", AUTH_PASS); 

     String result = restTemplate.postForLocation(API_URL + "account/authenticate/?email={email}&token={token}", String.class, args); 

     return result; 
    } 

Zwraca wartość NULL.

Z tym samym kodem, ale przy użyciu getForObject (i oczywiście, zmieniając adres URL na coś odpowiedniego), mam pełną odpowiedź.

Więc ... jak uzyskać ODPOWIEDŹ od postForLocation?

Obs .: Przepraszam, jeśli to pytanie jest głupie. Jestem początkujący w Javie

+1

Powinieneś opublikować "odpowiedź" jako odpowiedź. – Jaanus

+0

Dzięki ... po raz pierwszy muszę to zrobić:] – Alexandre

Odpowiedz

1

Dzięki jednemu z odpowiedziami i zorientowali się, jak uzyskać odpowiedź od POST ze sprężyną za pomocą postForObject

String result = restTemplate.postForObject(API_URL + "account/authenticate/?email="+ AUTH_USER +"&token="+ AUTH_PASS, null, String.class); 

Z jakiegoś powodu nie mogę używać argumentów na mapie i trzeba je umieścić wbudowany w adres URL. Ale dla mnie to w porządku.

+0

Otrzymuję tablicę ciągów jako odpowiedź, Jak mogę uzyskać to Alex? – SAR

+0

Witajcie @Antony, przepraszam za spóźnioną odpowiedź. Właściwie również otrzymałem tablicę wyników jako odpowiedź. W tym pytaniu myślę, że możesz zrozumieć, jak zrobiłem: http://stackoverflow.com/questions/16656938/parsing-json-string-as-simple-as-possible-with-gson – Alexandre

+0

zrobiłem to, byłem zdezorientowany z out, to jest serializowany ciąg PHP i muszę przekonwertować na Javę używając serializatora php. Dzięki – SAR

7

Metoda postForLocation zwraca wartość nagłówka Location. Powinieneś użyć postForObject, która zwraca odpowiedź serwera.

Więc tak:

String result = restTemplate.postForObject(API_URL + "account/authenticate/?email={email}&token={token}", String.class, args); 

ta zwróci odpowiedź jako ciąg znaków.

+0

Dzięki za napiwek. Mimo to twój kod jest błędny (otrzymałem komunikat o błędzie), ale udało mi się ustalić i zredagować moje pytanie z odpowiedzią. Dzięki! – Alexandre

+0

Nie ma za co! (Przepraszam za błąd) –

Powiązane problemy