|
Программирование Вопросы связанные с программированием в JAVA |
11.09.2009, 18:34
|
#1
|
ПроЭктировщик
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений (для 44 пользователей)
|
HTTP
Собсно следующий код:
HttpConnection con = (HttpConnection) Connector.open("http://www.google.com/");
вызывает зависание программы. Запускаю под эмулятором, интернет на компе есть, всё должно работать..
__________________
Я бы изменил мир, но Бог не даёт исходников...
|
(Offline)
|
|
11.09.2009, 18:55
|
#2
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: HTTP
А что идёт после этой строки?
|
(Offline)
|
|
11.09.2009, 19:00
|
#3
|
ПроЭктировщик
Регистрация: 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 в 19:12.
|
(Offline)
|
|
11.09.2009, 19:43
|
#4
|
ПроЭктировщик
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений (для 44 пользователей)
|
Ответ: HTTP
Нет, проблема не в коде а в его размещении. Если я пишу этот код в startApp - всё отлично работает, а в commandAction(где он мне и нужен) - не хочет...
__________________
Я бы изменил мир, но Бог не даёт исходников...
|
(Offline)
|
|
11.09.2009, 20:54
|
#5
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: HTTP
Ну если ты этот код размещаешь в конструкторе, startApp или commandAction,то он себя на разных телефонах и эмуляторах может вести вообще непредсказуемо. Заводи новый поток и всё будет работать.
|
(Offline)
|
|
11.09.2009, 21:11
|
#6
|
ПроЭктировщик
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений (для 44 пользователей)
|
Ответ: HTTP
Спасибо, попробую...
__________________
Я бы изменил мир, но Бог не даёт исходников...
|
(Offline)
|
|
11.09.2009, 21:31
|
#7
|
ПроЭктировщик
Регистрация: 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 в 21:38.
|
(Offline)
|
|
11.09.2009, 21:59
|
#8
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: HTTP
Скинь скомпиленный Jar
|
(Offline)
|
|
11.09.2009, 23:39
|
#9
|
ПроЭктировщик
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений (для 44 пользователей)
|
Ответ: HTTP
Вот:
__________________
Я бы изменил мир, но Бог не даёт исходников...
|
(Offline)
|
|
12.09.2009, 00:19
|
#10
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: HTTP
Ой что-то хз. У меня мидлет вылетает при попытке "Перевести". Даже не виснет, а именно вылетает.
|
(Offline)
|
|
12.09.2009, 02:20
|
#11
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: HTTP
HttpConnection con = (HttpConnection) Connector.open("http://www.google.com:80/");
|
Попробуй не указывать порт (вроде для http и так 80 по умолчанию) и убрать "/" в конце адреса.
|
(Offline)
|
|
12.09.2009, 11:44
|
#12
|
ПроЭктировщик
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений (для 44 пользователей)
|
Ответ: HTTP
Сообщение от Phantom
Ой что-то хз. У меня мидлет вылетает при попытке "Перевести". Даже не виснет, а именно вылетает.
|
Если не ввести ничего в текстовое поле и нажать "Перевести", должен вылетать алерт. Да и программа не виснет, я ведь создаю подключение в отдельном потоке. Только через отладку заметно, что поток стопорится на этой строке. Я это хотел ещё вчера в мой пост добавить, но инет вырубился...
Сообщение от Vint
Попробуй не указывать порт (вроде для http и так 80 по умолчанию) и убрать "/" в конце адреса.
|
Пробовал.. Да тут не может быть ошибки, ведь если я пишу этот же код в startApp, он отлично работает...
__________________
Я бы изменил мир, но Бог не даёт исходников...
|
(Offline)
|
|
13.09.2009, 19:21
|
#13
|
ПроЭктировщик
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений (для 44 пользователей)
|
Ответ: HTTP
Хм, странно, пошёл под линукс - заработало... Спасибо за помощь
__________________
Я бы изменил мир, но Бог не даёт исходников...
|
(Offline)
|
|
02.10.2009, 18:55
|
#14
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: HTTP
По-моему проблема в банальном переполнении массива.
Ответ сервера считывается в массив размером всего 300 байт,
а ответ там будет явно побольше, чем 300 байт.
|
(Offline)
|
|
03.10.2009, 00:34
|
#15
|
ПроЭктировщик
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений (для 44 пользователей)
|
Ответ: HTTP
Программа висла на строке подключения, а не при чтении. Да и, похоже, проблема была с компилятором под виндой.
__________________
Я бы изменил мир, но Бог не даёт исходников...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
ищу HTTP-Tunnel |
ZanoZa |
Болтовня |
2 |
16.10.2009 09:21 |
http с нокиа |
liery |
MidletPascal |
3 |
19.03.2009 19:11 |
Вычитка http |
Abiron |
2D-программирование |
4 |
29.01.2009 17:14 |
Http://myboo.ru/ |
impersonalis |
Болтовня |
3 |
22.05.2006 23:38 |
Часовой пояс GMT +4, время: 08:02.
|