RESTful параметры веб-службы для Android / Java - PullRequest
1 голос
/ 29 января 2011

Первый раз программист на Java.Мне интересно, какие у меня есть варианты загрузки XML на платформе Android (java).Существует несколько документов / демонстраций по подключению и загрузке данных (AFAIK).Мне нужно подписать запрос с базовой аутентификацией, а затем GET / POST / PUT / DELETE на URL, который будет возвращать тип содержимого application / 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 так много парсеров, что я полностью ошеломлен.

Ответы [ 4 ]

2 голосов
/ 29 января 2011

Я предпочитаю Джерси Клиент Я:

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

<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 голосов
/ 29 января 2011

Один из лучших примеров, которые я видел, это приложение Shelves от Romain Guy (инженер Google, работающий на Android):

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

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

2 голосов
/ 29 января 2011

Конечно, используйте 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
    }
1 голос
/ 29 января 2011

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

Для высокоуровневой среды REST см. Spring Android .

...