Использование ConnectionFactory и получение данных из URL - PullRequest
0 голосов
/ 14 января 2012
public class ConsumeFactoryThread extends Thread {
    private String url;

    public ConsumeFactoryThread(String url){

        this.url = url;

    }


    public void run(){

        ConnectionFactory connFact = new ConnectionFactory();
        ConnectionDescriptor connDesc;

        connDesc = connFact.getConnection(url);

        if(connDesc != null)
        {

            HttpConnection httpConn;
            httpConn = (HttpConnection) connDesc.getConnection();

            try
            {
                final int iResponseCode = httpConn.getResponseCode();
                UiApplication.getUiApplication().invokeLater(new Runnable()
                {

                    public void run()
                    {
                        //data retrieved



                    }

                });
            }
            catch(IOException e)
            {
                System.err.println("Caught IOException: " + e.getMessage());
            }
        }

    }

}

Я получил вышеуказанный код из одной из статей Blackberry, но я не совсем уверен, как получить необработанную строку содержимого URL, которая в моем случае будет строкой json.

Я знаю, что когда я не использовал ConnectionFactory, я использовал входной поток для получения данных, но я не знаю, совпадает ли он с более новым API.

Спасибо

1 Ответ

3 голосов
/ 15 января 2012

Я считаю, что вы хотите сделать следующее:

is = ((Connection) httpConn).openInputStream();
byte[] data = net.rim.device.api.io.IOUtilities.streamToBytes(is);
String result = new String(data);

Это захватит входной поток, который собрал объект HttpConnection, используйте класс RIM IOUtils, чтобы красиво поместить его в массив, и, наконец,создать строку из данных.С их помощью должно быть возможно использовать библиотеки JSON, которые RIM включает в свой SDK, для работы с JSON.

Примечание: не уверен, что приведение требуется, кстати, это непроверенный код.

Следует также отметить, что есть 3 разных API, которые вы можете использовать для создания сетевого подключения на BlackBerry.

Использование универсальной инфраструктуры соединений

Самый старый метрид (ОС 5 ниже) - это базовая реализация J2ME с дополнительными транспортными дескрипторами, добавляемыми в конец URL-адреса.Он использует J2ME GCF. здесь дано отличное объяснение, описывающее, как всегда надежно открывать HTTP-соединение.

Использование сетевого API

Представлено в ОС 5 и выше,Это текущий метод, который вы используете.Он переносит неприятные строки дескрипторов, которые добавляются в конец URL-адреса в GCF с помощью классов ConnectionFactory и ConnectionDescriptor.

Использование API связи

Введено в ОС 6 и выше.Это новейший возможный метод, это еще более высокая абстракция в сетевом API.Эти API абстрагируют, как собираются фактические данные, и стараются не беспокоить вас деталями протокола.Полезной особенностью этого API является то, что вы просто получаете результирующие данные, и вам не нужно беспокоиться о деталях реализации.

Следует учитывать, что при работе с JSON он даже оборачивается деталями преобразованияПолученные данные и конвертировать в нужный формат.Пример показан здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...