RESTful параметры веб-службы для Android / Java

1

Первый программист Java. Мне интересно, какие у меня варианты загрузки XML на платформе Android (java). Существует несколько документов/демонстраций по подключению и загрузке данных (AFAIK). Мне нужно подписать запрос с базовой аутентификацией, а затем GET/POST/PUT/DELETE на URL-адрес, который будет возвращать тип содержимого приложения /xml. В основном мне нужно подражать этому типу запроса cURL в Java:

curl  -H 'Content-type: application/xml' -H 'Accept: application/xml' \
      -u '{account}/{username}:{apikey}' https://mywebsite.com

Должен ли я просто использовать HttpClient в org.apache или есть лучшее решение? Как только я загрузил XML-ответ из моего API, что такое рекомендуемый парсер для Android. Кажется, что для Java очень много парсеров, я полностью перегружен.

Теги:
restful-authentication

4 ответа

2
Лучший ответ

Конечно, используйте HTTPClient, он должен работать на Android, и гораздо проще сделать звонки, чем писать самостоятельно... вот пример: -

    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("id", "12345"));
        nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
2

Я предпочитаю Jersey client себе:

Зависимость:

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-client</artifactId>
    <version>1.5</version>
</dependency>

Пример:

WebResource resource = Client.create().resource("http://www.site.com/");
ClientResponse response = resource.path("user/list").header("foo", "bar").type(MediaType.TEXT_PLAIN).post("Awesome Sauce!", ClientResponse.class);
String responseBody = response.getEntity(String.class);
System.out.println(responseBody);

Но HttpClient, безусловно, будет работать.

Для парсеров мне нравится JAXB, XStream, XPP, JDOM, или всегда существует Java DOM API. Есть куча XML-библиотек, которые вы можете использовать в Google. XPP является легким и быстрым, что может хорошо работать для Android.

2

Одним из лучших примеров, которые я видел, является приложение "Полки" от Ромена Гая (инженера Google, работающего на Android):

http://code.google.com/p/shelves/

Приложение выполняет HTTP-запросы к службе Google Books и анализирует полученный XML-код. Есть и другие примеры, плавающие вокруг. Но поскольку приложение "Полки" происходит от одного из людей Google, у меня всегда было больше веры в него, демонстрируя лучшие практики, чем другой код, с которым я сталкиваюсь.

1

Современное состояние для вызова сервисов REST было представлено автором официального приложения twitter в Google IO 2010. Что касается разбора XML, я обычно использую парсер партитуры, встроенный в SDK.

Для платформы REST более высокого уровня посмотрите Spring Android.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню