Java EE 6 ja RESTful Web Services Osa 3

Artikkelisarjassa olen käynyt läpi Java EE 6 REST palvelun tekemistä JAX-RS rajapinnan avulla. GET-tyyppisiä palveluita on helppoa testata vaikkapa selaimella, koska ne lähettävät GET pyyntöjä. Jos haluat käyttää muitakin REST metodeita, tarvitaan hieman fiksumpi client ohjelma.

REST metodeita käytetään tämän periaatteen mukaan:

HTTP PUT == luo uusi resurssi-instanssi
HTTP GET == hae resurssin tiedot (yhden tai useamman)
HTTP POST == päivitä resurssia
HTTP DELETE == poista resurssi

Testaukseen ja muuhunkin käyttöön voit tehdä Java-pohjaisen asiakasohjelman helposti, käyttäen URLConnection luokkaa. Tässä esimerkkikoodia:

// REST PUT CLIENT SAMPLE
String xmlMessage = ”<?xml version=\”1.0\” encoding=\”UTF-8\”?><root>test xml</root>”; // create sample xml file or load it
URL u = new URL(”http://www.myserver.fi/services/res/addmore&#8221;); // set up URL
HttpURLConnection uc = (HttpURLConnection) u.openConnection();
uc.setRequestMethod(”PUT”);
uc.setRequestProperty(”Content-type”, ”application/xml”);
uc.setDoOutput(true);
OutputStream os = uc.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.println(xmlMessage);
pw.close();
uc.connect();
InputStream is = uc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while (br.ready()) {
System.out.println(br.readLine());
}
br.close();
uc.disconnect();

Huomaa yllä pari pientä yksityiskohtaa:

Ota käyttöön nimenomaan HttpURLConnection, koska sen kautta aukeaa muutama tärkeä lisämetodi. Kuten yllä näet, aseta HTTP request method haluttuun moodiin, tässä siis PUT. Aseta content-type parameteri muotoon application/xml – niin kohdepalvelin ymmärtää saavansa XML sanoman. Aseta output-arvo todeksi, niin myös URL:iin lähettäminen onnistuu. Sitten vain kirjoitat xml-sanoman url osoitteeseen, ja luet mitä palvelin lähettää takaisin.

Jos haluat https-salauksen päälle, yksinkertaisesti vaihdat URL:ksi https – java sisältää tuen ssl salaukselle palvelimen kanssa (jos palvelimesta toiminto löytyy). Jos haluat käyttää BASIC autentikointia, voit tehdä sen esim. näin (ennen yhteyden avaamista):

//  write auth header
BASE64Encoder encoder = new BASE64Encoder();
String encodedCredential = encoder.encode( (username + ”:” + password).getBytes() );
connection.setRequestProperty(”Authorization”, ”BASIC ” + encodedCredential);

Kuten näet, REST on melkolailla yksinkertainen ’low tech’ ratkaisu ja näin ollen vastalause SOAP:n monimutkaisuudelle. Huomaa että ylläolevat koodit toimivat pienin muutoksin myös esim. Android alustalla, ja näillä voit kytkeytyä esim. Flickr, Ebay, Amazon, Facebook tai Google REST palveluihin.

Palataan taas takaisin palvelinpäähän ja Java EE 6 uutuuksiin ensi osassa.

Mainokset

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s