Взаимодействие с RESTful веб-сервисов


Следующие рабочие функции кажется немного богатство для меня, как она была собрана из кучки (видимо, плохо написано) онлайн-учебники, и я хочу знать, если есть лучший (или более стандартный) способ подойти к этому.

/***
 * GET HTTP Operation
 * 
 * @param   request Request URI 
 * @return  Element Root Element of XML Response
 */
protected Element get(String request) {

    HttpURLConnection connection = null;

    Element rootElement;

    try {

        URL url = new URL(this.baseUrl + request);
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        BASE64Encoder enc = new sun.misc.BASE64Encoder();
        String userpassword = this.username + ":" + this.password;
        String encodedAuthorization = enc.encode( userpassword.getBytes() );
        connection.setRequestProperty("Authorization", "Basic "+ encodedAuthorization);
        connection.setRequestProperty("Content-type", "application/xml");
        connection.setRequestProperty("Accept", "application/xml");

        InputStream responseStream = connection.getInputStream();

        //--- Parse XML response InputStream into DOM

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();

        Document doc = db.parse(responseStream);

        rootElement = doc.getDocumentElement();

    } catch(Exception e) {

        System.out.print(e.toString());
        rootElement = null;

    } finally {

        if(connection != null) {
            connection.disconnect(); 
        }

    }

    return rootElement;
}

Я в Java Новичок, и мне особенно непонятно на правильном попробовать/поймать использования.

Я создание Java-оберткой для API-интерфейса REST и это маленький кусочек головоломки. Вы можете нажать здесь , чтобы увидеть более широкую картину проекта в целом.



4479
6
задан 24 марта 2011 в 03:03 Источник Поделиться
Комментарии
1 ответ

Добавление еще одного ответа, так как я реально смотрю на код...

Вы не заглатывая каждое исключение, которое получает бросили. Вызывающий код не имеет понятия, будет ли он пытался ударить страницу, которая не существует, его запрос был неправильный, и т. д. Если вы не хотите, чтобы разоблачить исключения (вероятно, хорошая идея, чтобы клиентский код не должен беспокоиться), то вы, возможно, захотите установить какой-то флаг ошибки в рамках вашего класса, который может быть вытянут причина не возвращаться в XML, или бросить собственные пользовательские исключения.

Я предполагаю, что в ваши другие способы вы делать подобного рода настройки для подключения (В можно, и т. д.)...Я бы рекомендовал двигаться, что в его собственный способ установки. Если вам нужно специализироваться в зависимости от типа запроса, затем переходят в тип, и вы можете, по крайней мере, объединить все это в одном месте.

2
ответ дан 24 марта 2011 в 03:03 Источник Поделиться