Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Ошибка при HttpConnection.openInputStream()


Автор: vG874WbT5F 26.5.2011, 16:58
На телефоне возникает ошибка "java.io.IOException: Request already sent" при вызове HttpConnection.openInputStream():
Код

    try
        {
            hc = (HttpConnection)Connector.open(url); // при любом url
            hc.setRequestMethod(HttpConnection.GET);
            hc.setRequestProperty("User-Agent", System.getProperty("microedition.platform"));
            hc.setRequestProperty("Content-Language", "ru-RU");
            InputStream is = hc.openInputStream(); // тут возникает ошибка
            OutputStream os = hc.openOutputStream();
        }
        catch (Exception ex)
        {
           ...
        }

С чем это связано?

Автор: oxigen 27.5.2011, 10:54
Попробуй сначала отправлять запрос, а потом уж открывать InputStream. А сейчас ты пытаешься прочитать ответ до того, как отправил запрос
Код

            hc = (HttpConnection)Connector.open(url); // при любом url
            hc.setRequestMethod(HttpConnection.GET);
            hc.setRequestProperty("User-Agent", System.getProperty("microedition.platform"));
            hc.setRequestProperty("Content-Language", "ru-RU");
            OutputStream os = hc.openOutputStream();
            out.writeUTF("request body");
            rc = hc.getResponseCode();
            if (rc != HttpConnection.HTTP_OK) {
                throw new IOException("HTTP response code: " + rc);
            }
            InputStream is = hc.openInputStream(); 

Автор: vG874WbT5F 27.5.2011, 15:33
А если мне не надо никакого запроса отправлять, а просто прочитать страницу?

Автор: oxigen 27.5.2011, 16:44
Цитата(vG874WbT5F @ 27.5.2011,  15:33)
А если мне не надо никакого запроса отправлять, а просто прочитать страницу?

"Просто прочитать" - это как раз и есть GET запрос.
Ты говоришь : "дай мне страничку по этому адресу"
И получаешь в ответ содержимое странички. Или ошибку (не существует, не доступна e.t.c. )

Почитай про то, что такое http протокол.

Автор: vG874WbT5F 27.5.2011, 17:57
Я и отправляю запрос GET:
Код

hc.setRequestMethod(HttpConnection.GET);

А вылезает эта ошибка когда открываю InputStream.....

Автор: oxigen 30.5.2011, 10:15
Код

hc.setRequestMethod(HttpConnection.GET);

Это ничего никуда не отправляет. Ты просто у себя формируешь заголовок запроса. 

Если посмотреть на то, что реально происходит:
Код

        hc = (HttpConnection)Connector.open("http://google.com");  
        hc.setRequestMethod(HttpConnection.GET);
        
        int rc = hc.getResponseCode();                    //<-- ИМЕННО ЗДЕСЬ был послан запрос и получен response code и содержимое страницы!!
        if (rc != HttpConnection.HTTP_OK) {
            System.out.println("incorrect responce code" + rc); // Если response code != 200, то значит страница не доступна или еще что-то. 
            return;
        }

        InputStream is = hc.openInputStream();  // А вот теперь можно уже читать полученные данные

Автор: vG874WbT5F 31.5.2011, 11:59
Спасибо, разобрался.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)