/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.servicemix.examples.camel.rest.client; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import org.apache.cxf.helpers.IOUtils; import org.apache.servicemix.examples.camel.rest.model.Person; public class Client { private static final String PERSON_SERVICE_URL = "http://localhost:8989/rest/personservice/"; public static void main(String[] args) { Client client = new Client(); try { client.postPerson(new Person(1, "John Smith", 21)); client.getPerson(1); client.deletePerson(1); } catch (Exception e) { e.printStackTrace(); } } public void postPerson(Person person) throws Exception{ System.out.println("\n### POST PERSON -> "); HttpURLConnection connection = connect(PERSON_SERVICE_URL + "person/post/"); connection.setDoOutput(true); connection.setRequestProperty("Content-Type", "application/xml"); JAXBContext jaxbContext = JAXBContext.newInstance(Person.class); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); // pretty xml output jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); jaxbMarshaller.marshal(person, System.out); jaxbMarshaller.marshal(person, connection.getOutputStream()); System.out.println("\n### POST PERSON RESPONSE"); System.out.println("Status: " + connection.getResponseCode() + " " + connection.getResponseMessage()); System.out.println("Location: " + connection.getHeaderField("Location")); } public void getPerson(int id) throws Exception{ String url = PERSON_SERVICE_URL + "person/get/" + id; System.out.println("\n### GET PERSON WITH ID " + id + " FROM URL " + url); HttpURLConnection connection = connect(url); connection.setDoInput(true); InputStream stream = connection.getResponseCode() / 100 == 2 ? connection.getInputStream() : connection.getErrorStream(); System.out.println("Status: " + connection.getResponseCode() + " " + connection.getResponseMessage()); System.out.println(IOUtils.toString(stream)); } public void deletePerson(int id) throws Exception{ String url = PERSON_SERVICE_URL+"person/delete/"+id; System.out.println("\n### DELETE PERSON WITH ID "+id+" FROM URL "+url); HttpURLConnection connection = (HttpURLConnection) connect(url); connection.setRequestMethod("DELETE"); connection.setDoInput(true); System.out.println("Status: " + connection.getResponseCode() + " " + connection.getResponseMessage()); if (connection.getResponseCode() / 100 != 2) { System.out.println(IOUtils.toString(connection.getErrorStream())); } } private HttpURLConnection connect(String url) throws Exception{ HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); return connection; } }