Как передать пользовательские объекты с клиентом CXF REST? - PullRequest
3 голосов
/ 21 августа 2011

Я занимаюсь разработкой приложения для Android, которое должно подключаться к удаленной базе данных через веб-сервис CXF. Я пытался использовать Soap, но из-за различных проблем оставил этот вариант и выбрал облегченный REST-сервис (добавив аннотации к существующему веб-сервису cxf). У меня есть клиент Rest, который вызывается изнутри действия. Я работал с простыми параметрами, такими как String, int и т. Д. Теперь я хочу передать определенный пользователем объект к службе и получить некоторое значение String со стороны сервера. Как мне это сделать? Пожалуйста, помогите ... По поиску я нашел статьи об использовании JSON, JAXB и т. Д., Но я не знаю, что они делают или как я их использую либо. Я очень новичок в программировании с использованием этих технологий.

1 Ответ

2 голосов
/ 30 августа 2011

Вы можете сделать что-то подобное для своего клиентского кода:

private static final String URI = "http://localhost/rest/customer";

private Customer readCustomer(String id) {
    try {
        URL url = new URL(URI + "/" + id);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Accept", "application/xml");

        InputStream data = connection.getInputStream();
        // TODO - Read data from InputStream

        connection.disconnect();
        return customer;
    } catch(Exception e) {
        throw new RuntimeException(e);
    }
}

private void createCustomer(Customer customer) {
    try { 
        URL url = new URL(URI);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setInstanceFollowRedirects(false);
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type", "application/xml");

        OutputStream os = connection.getOutputStream();
        // TODO - Write data to OutputStream
        os.flush();

        connection.getResponseCode();
        connection.disconnect();
    } catch(Exception e) {
        throw new RuntimeException(e);
    }
}

private void updateCustomer(Customer customer) {
    try {
        URL url = new URL(URI);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setInstanceFollowRedirects(false);
        connection.setRequestMethod("PUT");
        connection.setRequestProperty("Content-Type", "application/xml");

        OutputStream os = connection.getOutputStream();
        // TODO - Write data to OutputStream
        os.flush();

        connection.getResponseCode();
        connection.disconnect();
    } catch(Exception e) {
        throw new RuntimeException(e);
    }
}

private void deleteCustomer(String id) {
    try {
        URL url = new URL(URI + "/" + id);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("DELETE");
        connection.getResponseCode();
        connection.disconnect();
    } catch(Exception e) {
        throw new RuntimeException(e);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...