Alla oleva esimerkki hakee yksittäisen varauksen tiedot sekä tekee varaushaun Java:lla. Esimerkissä käytetään Apache HttpClient ja Googlen Gson kirjastoja helpottamaan http-kutsun tekemistä sekä JSON:n käsittelyä.
Luodut rajapintaluokat eivät aina sisällä kaikkia mahdollisia kenttiä joten lisää niitä tarpeen mukaan. Koodi ei myöskään sisällä virheenkäsittelyä.
Voit ladata maven projektin ja ajaa sen komentoriviltä.
Muista ensin vaihtaa API_KEY koodiin.
mvn package mvn exec:java -Dexec.mainClass="com.example.Main"
Voit tuoda projektin Eclipseen valitsemalla File -> Import -> Existing projects into workspace
ajettuasi ensin alla olevan komennon komentoriviltä.
mvn eclipse:eclipse
Sen jälkeen koodia voi ajaa myös suoraan Eclipsestä valitsemalla Run As -> Java Application
Java-esimerkki
package com.example; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.ParseException; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.util.EntityUtils; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonSyntaxException; public class Main { private static String API_KEY = "oma_api_key"; public static void main(String[] a) throws Exception { ReservationService service = new ReservationService(); System.out.println(service.getReservation("1234")); JReservationQuery query = new JReservationQuery(); DateFormat df = new SimpleDateFormat("dd.MM.yyyy"); query.startDate = df.parse("15.1.2014"); query.endDate = df.parse("17.1.2014"); query.room = Arrays.asList("G205"); System.out.println(service.searchReservations(query)); } public static class ReservationService { private String serviceUrl = "https://opendata.metropolia.fi/r1/reservation"; private static Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd'T'HH:mm").disableHtmlEscaping().create(); public JReservation getReservation(String id) throws JsonSyntaxException, ParseException, IOException { HttpClient client = getClient(); HttpGet get = new HttpGet(serviceUrl + "/" + id + "?apiKey=" + API_KEY); HttpResponse response = client.execute(get); try { JResult result = gson.fromJson( EntityUtils.toString(response.getEntity(), "UTF-8"), JResult.class); if (result != null && result.reservations != null && !result.reservations.isEmpty()) { return result.reservations.get(0); } return null; } finally { get.releaseConnection(); } } public List<JReservation> searchReservations(JReservationQuery query) throws ClientProtocolException, IOException { HttpClient client = getClient(); HttpPost post = new HttpPost(serviceUrl + "/search?apiKey=" + API_KEY); String json = gson.toJson(query); StringEntity entity = new StringEntity(json, ContentType.create( "application/json", "UTF-8")); post.setEntity(entity); HttpResponse response = client.execute(post); try { JResult result = gson.fromJson( EntityUtils.toString(response.getEntity(), "UTF-8"), JResult.class); return result.reservations; } finally { post.releaseConnection(); } } private HttpClient getClient() { DefaultHttpClient client = new DefaultHttpClient(); HttpParams params = client.getParams(); HttpConnectionParams.setConnectionTimeout(params, 30000); HttpConnectionParams.setSoTimeout(params, 30000); return client; } } public static class JResult { public String status; public List<JReservation> reservations; } public static class JReservation { public String id; public String subject; public Date startDate; public Date endDate; public List<JResource> resources; public String toString() { return "\n" + subject + " " + startDate + " - " + endDate + " (" + resources + ")"; } } public static class JResource { public String id; public String type; public String code; public String name; public String toString() { return name+" "+code; } } public static class JReservationQuery { public Date startDate; public Date endDate; public List<String> room; } }