Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для мобильных телефонов > JAVA Micro Edition > Программирование

Программирование Вопросы связанные с программированием в JAVA

Ответ
 
Опции темы
Старый 11.09.2009, 14:34   #1
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Вопрос HTTP

Собсно следующий код:
HttpConnection con = (HttpConnection) Connector.open("http://www.google.com/");
вызывает зависание программы. Запускаю под эмулятором, интернет на компе есть, всё должно работать..
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Старый 11.09.2009, 14:55   #2
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,084
Написано 669 полезных сообщений
(для 1,665 пользователей)
Ответ: HTTP

А что идёт после этой строки?
(Offline)
 
Ответить с цитированием
Старый 11.09.2009, 15:00   #3
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: HTTP

Вот весь код этого метода:
try {
                HttpConnection con = (HttpConnection) Connector.open("http://www.google.com:80/");
                InputStream is = con.openInputStream();
                long len = con.getLength();
                int ch = 0;
                char[] r = new char[300];
                if(len!=-1){
                    for(int i = 0;i<len;i++)
                        if((ch = is.read())!= -1) r[i] = (char)ch;
                }
                else {
                    int i = 0;
                    while ((ch = is.read()) != -1){
                        r[i] = (char) ch;
                        i++;
                    }
                }
                is.close();
                con.close();
                TransText.setString(new String(r));
            } catch (IOException ex) {
                ex.printStackTrace();
            }
При этом вылазит вопрос "разрешить доступ к инету?" и что не нежимай - ничего не даёт...

Хм, только что заметил, что программа виснет не после того, как я подтверждаю доступ к инету, а именно на запросе доступа... Может нужно открывать подключение в отдельном потоке? Или может ещё что-то нужно прописать перед первой строкой?

Скачал 2 примера реализиции HTTP-подключения, с ними такой же трабл... А вот скачал Opera mini, запустил на эмуляторе - работает нормально, не виснет на запросе...
__________________
Я бы изменил мир, но Бог не даёт исходников...

Последний раз редактировалось -=Jack=-, 11.09.2009 в 15:12.
(Offline)
 
Ответить с цитированием
Старый 11.09.2009, 15:43   #4
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: HTTP

Нет, проблема не в коде а в его размещении. Если я пишу этот код в startApp - всё отлично работает, а в commandAction(где он мне и нужен) - не хочет...
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Старый 11.09.2009, 16:54   #5
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,084
Написано 669 полезных сообщений
(для 1,665 пользователей)
Ответ: HTTP

Ну если ты этот код размещаешь в конструкторе, startApp или commandAction,то он себя на разных телефонах и эмуляторах может вести вообще непредсказуемо. Заводи новый поток и всё будет работать.
(Offline)
 
Ответить с цитированием
Старый 11.09.2009, 17:11   #6
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: HTTP

Спасибо, попробую...
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Старый 11.09.2009, 17:31   #7
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: HTTP

Всёровно поток виснет на строке подключения...
public class Trans extends Thread {
    public void run(){
        try {
            HttpConnection con = (HttpConnection) Connector.open("http://www.google.com:80/");
            InputStream is = con.openInputStream();
            long len = con.getLength();
            int ch = 0;
            char[] r = new char[300];
            if (len != -1) {
                for (int i = 0; i < len; i++) {
                    if ((ch = is.read()) != -1) {
                        r[i] = (char) ch;
                    }
                }
            } else {
                int i = 0;
                while ((ch = is.read()) != -1) {
                    r[i] = (char) ch;
                    i++;
                }
            }
            is.close();
            con.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    public Trans(){
        super();
        start();
    }
}
__________________
Я бы изменил мир, но Бог не даёт исходников...

Последний раз редактировалось -=Jack=-, 11.09.2009 в 17:38.
(Offline)
 
Ответить с цитированием
Старый 11.09.2009, 17:59   #8
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,084
Написано 669 полезных сообщений
(для 1,665 пользователей)
Ответ: HTTP

Скинь скомпиленный Jar
(Offline)
 
Ответить с цитированием
Старый 11.09.2009, 19:39   #9
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: HTTP

Вот:
Вложения
Тип файла: zip jar.zip (3.6 Кб, 154 просмотров)
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Старый 11.09.2009, 20:19   #10
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,084
Написано 669 полезных сообщений
(для 1,665 пользователей)
Ответ: HTTP

Ой что-то хз. У меня мидлет вылетает при попытке "Перевести". Даже не виснет, а именно вылетает.
(Offline)
 
Ответить с цитированием
Старый 11.09.2009, 22:20   #11
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: HTTP

HttpConnection con = (HttpConnection) Connector.open("http://www.google.com:80/");
Попробуй не указывать порт (вроде для http и так 80 по умолчанию) и убрать "/" в конце адреса.
(Offline)
 
Ответить с цитированием
Старый 12.09.2009, 07:44   #12
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Вопрос Ответ: HTTP

Сообщение от Phantom Посмотреть сообщение
Ой что-то хз. У меня мидлет вылетает при попытке "Перевести". Даже не виснет, а именно вылетает.
Если не ввести ничего в текстовое поле и нажать "Перевести", должен вылетать алерт. Да и программа не виснет, я ведь создаю подключение в отдельном потоке. Только через отладку заметно, что поток стопорится на этой строке. Я это хотел ещё вчера в мой пост добавить, но инет вырубился...

Сообщение от Vint
Попробуй не указывать порт (вроде для http и так 80 по умолчанию) и убрать "/" в конце адреса.
Пробовал.. Да тут не может быть ошибки, ведь если я пишу этот же код в startApp, он отлично работает...
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Старый 13.09.2009, 15:21   #13
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: HTTP

Хм, странно, пошёл под линукс - заработало... Спасибо за помощь
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Старый 02.10.2009, 14:55   #14
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: HTTP

По-моему проблема в банальном переполнении массива.
Ответ сервера считывается в массив размером всего 300 байт,
а ответ там будет явно побольше, чем 300 байт.
(Offline)
 
Ответить с цитированием
Старый 02.10.2009, 20:34   #15
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: HTTP

Программа висла на строке подключения, а не при чтении. Да и, похоже, проблема была с компилятором под виндой.
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ищу HTTP-Tunnel ZanoZa Болтовня 2 16.10.2009 05:21
http с нокиа liery MidletPascal 3 19.03.2009 16:11
Вычитка http Abiron 2D-программирование 4 29.01.2009 14:14
Http://myboo.ru/ impersonalis Болтовня 3 22.05.2006 19:38


Часовой пояс GMT +1, время: 20:21.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com