Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение содержимого удалённой страницы 
:(
    Опции темы
siiXth
Дата 30.12.2012, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.12.2012

Репутация: нет
Всего: нет



Доброго времени.
Балуюсь на андроид, я вообще полнейший нуб, готовьтесь ;)

Требуется достать контент из ответа по урлу,я очень много перепробовал и наконец сдался.

По готовому шаблону с eclipse в самом конце
Код
protected void onCreate(Bundle savedInstanceState) {

вставил
Код
final TextView tLoad = (TextView) findViewById(R.id.fullscreen_content);
        tLoad.setText(GetPage("http://php.my"));


К выбору "куда вставлять"(как это на яве называется?) притензий быть не может так как 
Код
tLoad.setText("LAKA");
 работает.

После onCreate добавил метод (Код взят отсюда)
Код
public String GetPage(String urlsite)
    {
        String outx= "";
        try
        {
            URL url = new URL(urlsite);
            URLConnection conn = url.openConnection();
            InputStreamReader rd = new InputStreamReader(conn.getInputStream());
            StringBuilder allpage = new StringBuilder();
            return allpage.toString();
        }
        catch (Exception e)
        {
            
        }
        return outx;  
    };


И всё это дело не работает.
Судя по всему, запрос не идёт вообще, так как вышеуказанный домен php.my я поднял на локалхосте и в index.php содержится код
Код
<?php
file_put_contents('1.txt','1.txt');
echo "testvar";
?>


Файл не создаётся , соотв. я не делаю запрос. Ошибок нет вообще.
Что я делаю не так ?
Юзаю всё что сказано поставить тут, так же и тестирую.

И да, так же интересуюсь как связь получения-вставки делается на яве. Например вывод сообщений, в ответе php выдаю json, а в приложении декодирую и вставляю?

Спасибо.
PM MAIL   Вверх
siiXth
Дата 30.12.2012, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.12.2012

Репутация: нет
Всего: нет



после изменения
Код
catch (Exception e)
        {
         System.out.println( e.getMessage() );
        }

приложение вылетает с поп-ап ошибкой
"Unforchantly, PHPRU has stopped" 

А в LogCat много ошибок (скрин) которые ну вообще без понятия как отдебагать, которые к тому же не сохраняются в лог-файл
Что делать дальше?
PM MAIL   Вверх
dorogoyIV
Дата 30.12.2012, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(siiXth @  30.12.2012,  10:34 Найти цитируемый пост)

StringBuilder allpage = new StringBuilder();
return allpage.toString();

сначала надо что то залить в строку  smile 
PM MAIL   Вверх
siiXth
Дата 31.12.2012, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.12.2012

Репутация: нет
Всего: нет



Цитата(dorogoyIV @ 30.12.2012,  22:10)
Цитата(siiXth @  30.12.2012,  10:34 Найти цитируемый пост)

StringBuilder allpage = new StringBuilder();
return allpage.toString();

сначала надо что то залить в строку  smile

Да, знаю что заполнить надо вот так.
Код

StringBuilder allpage = new StringBuilder();
            int n = 0;
            char[] buffer = new char[40000];
            while (n >= 0)
            {
                n = rd.read(buffer, 0, buffer.length);
                if (n > 0)
                {
                    allpage.append(buffer, 0, n);                    
                }
            }


Проблема в другом - как я описал выше, запрос даже не идёт. На локалхосте пхпшка при запросе должна создать файл, а раз она не создаёт, то приложение не делает запрос.
В манифесте дописываю
Код

<uses-permission android:name="android.permission.INTERNET"/>

после /application

Это сообщение отредактировал(а) siiXth - 31.12.2012, 18:09
PM MAIL   Вверх
dorogoyIV
Дата 31.12.2012, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(siiXth @  30.12.2012,  10:34 Найти цитируемый пост)
tLoad.setText(GetPage("http://php.my"));

этот адрес мне не нравится
может быть так?
http://localhost/php.my
хотя фиг его знает, что там у тебя прописано, когда, например, денвером запускаешь виртуальный сервер, по умолчанию надо писать "локалхост"
PM MAIL   Вверх
siiXth
Дата 2.1.2013, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.12.2012

Репутация: нет
Всего: нет



В общем разобрался
Все дело в том, что strict mode (http://developer.android.com/reference/android/os/StrictMode.html) был включен по умолчанию в Android начиная с версии 3.0. Это значит, что ваше приложение не может обращаться к сети напрямую из основного UI потока, так как это может занимать некоторое время и при этом основной поток блокируется и не отвечает на другие события.
Потому я проюзал AsyncTask, а конкретно пример с получением содержимого странцы который еле откопал - http://www.androidsnippets.com/grab-a-url-...g-and-asynctask
Ну и приложение просто так не использует хосты(hosts-файл) компа через который выходит в инет, для этого нужно прописывать в хостах устройства, а для этого нужно бить устройство в root, чего я особо делать не собираюсь. Потому поднял просто домен в инете и на нём буду тестить. Немного конечно увеличится параллельная разработка, но не смертельно.

Остаётся вопрос - в каком виде получать данные от сервера. Мой вариант - возвращать json объект который в приложении разбирать. Может юзают что-нибудь другое что для java лучше?

Это сообщение отредактировал(а) siiXth - 2.1.2013, 14:49
PM MAIL   Вверх
jk1
Дата 3.1.2013, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

Остаётся вопрос - в каком виде получать данные от сервера. Мой вариант - возвращать json объект который в приложении разбирать. Может юзают что-нибудь другое что для java лучше?


JSON вполне подойдет, на Java полно библиотек для работы с ним, например


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
siiXth
Дата 7.1.2013, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.12.2012

Репутация: нет
Всего: нет



Оукей, теперь вопрос про вставку, покачто теория.
Известно что textview поддерживает хтмл, по крайней мере базовый.
К примеру, мы выводим в приложение новости. Вывыдим через listview каждая новость - новый пункт (верно?).
Вывод самой новости может содержать хтмл и появляется вопрос по поводу вывода картинок.
Вариант 1: через webview - тут всё понятно, пхп даёт в ответ хтмл с картинками и мы просто в listview через webview выводим его
Вариант 2: искать картинки в textview и выводить через ImageGetter - подробнее.
Вопрос: какой вариант лучше?
PM MAIL   Вверх
siiXth
Дата 17.1.2013, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.12.2012

Репутация: нет
Всего: нет



Ой, простите, но я аппаю =)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0863 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.