Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
GoldfxTrader
0 / 0 / 0
Регистрация: 20.10.2014
Сообщений: 15
#1

Правильный запрос и парсинг даннх - Android

20.10.2014, 14:17. Просмотров 710. Ответов 4
Метки нет (Все метки)

Здравствуйте. Столкнулся с проблемой на этапе запуска программы. В eclipce в логе выводит такой результат:
Кликните здесь для просмотра всего текста

10-20 05:52:27.700: W/dalvikvm(1857): threadid=1: thread exiting with uncaught exception (group=0xb3ac9ba8)
10-20 05:52:27.720: E/AndroidRuntime(1857): FATAL EXCEPTION: main
10-20 05:52:27.720: E/AndroidRuntime(1857): Process: com.example.rssnews, PID: 1857
10-20 05:52:27.720: E/AndroidRuntime(1857): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rssnews/com.example.rssnews.MainActivity}: java.lang.RuntimeException: android.os.NetworkOnMainThreadException
10-20 05:52:27.720: E/AndroidRuntime(1857): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
10-20 05:52:27.720: E/AndroidRuntime(1857): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
10-20 05:52:27.720: E/AndroidRuntime(1857): at android.app.ActivityThread.access$800(ActivityThread.java:135)
10-20 05:52:27.720: E/AndroidRuntime(1857): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
10-20 05:52:27.720: E/AndroidRuntime(1857): at android.os.Handler.dispatchMessage(Handler.java:102)
10-20 05:52:27.720: E/AndroidRuntime(1857): at android.os.Looper.loop(Looper.java:136)
10-20 05:52:27.720: E/AndroidRuntime(1857): at android.app.ActivityThread.main(ActivityThread.java:5017)
10-20 05:52:27.720: E/AndroidRuntime(1857): at java.lang.reflect.Method.invokeNative(Native Method)
10-20 05:52:27.720: E/AndroidRuntime(1857): at java.lang.reflect.Method.invoke(Method.java:515)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
10-20 05:52:27.720: E/AndroidRuntime(1857): at dalvik.system.NativeStart.main(Native Method)
10-20 05:52:27.720: E/AndroidRuntime(1857): Caused by: java.lang.RuntimeException: android.os.NetworkOnMainThreadException
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.example.rssnews.NewParser.parse(NewParser.java:74)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.example.rssnews.MainActivity.onCreate(MainActivity.java:35)
10-20 05:52:27.720: E/AndroidRuntime(1857): at android.app.Activity.performCreate(Activity.java:5231)
10-20 05:52:27.720: E/AndroidRuntime(1857): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-20 05:52:27.720: E/AndroidRuntime(1857): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
10-20 05:52:27.720: E/AndroidRuntime(1857): ... 11 more
10-20 05:52:27.720: E/AndroidRuntime(1857): Caused by: android.os.NetworkOnMainThreadException
10-20 05:52:27.720: E/AndroidRuntime(1857): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
10-20 05:52:27.720: E/AndroidRuntime(1857): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
10-20 05:52:27.720: E/AndroidRuntime(1857): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
10-20 05:52:27.720: E/AndroidRuntime(1857): at java.net.InetAddress.getAllByName(InetAddress.java:214)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.example.rssnews.NewParser.getInputStream(NewParser.java:30)
10-20 05:52:27.720: E/AndroidRuntime(1857): at com.example.rssnews.NewParser.parse(NewParser.java:72)
10-20 05:52:27.720: E/AndroidRuntime(1857): ... 15 more


На экране эмулятора появляется сообщение: "В приложении ..... произошла ошибка"
Подскажите как отловить ошибку.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2014, 14:17     Правильный запрос и парсинг даннх
Посмотрите здесь:

Android Парсинг JSON'а
Парсинг строки Android
Android Парсинг XML
Android Парсинг Википедии
Android Парсинг+вывод
Android Правильный ViewPager
Android Как именно можно сделать SQLite запрос, если запрос уже сформирован?
Android Правильный SQL запрос для реализации фильтра списка записей
Парсинг сайта Android
Android Правильный отступ при наложении
Android Правильный асинхронный вызов
Android Парсинг JSON

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
20.10.2014, 15:52     Правильный запрос и парсинг даннх #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от GoldfxTrader Посмотреть сообщение
10-20 05:52:27.720: E/AndroidRuntime(1857): Caused by: android.os.NetworkOnMainThreadException
вот она. Нельзя работать с интернетом в UI потоке. Используйте async task/loader/thread.
GoldfxTrader
0 / 0 / 0
Регистрация: 20.10.2014
Сообщений: 15
21.10.2014, 19:17  [ТС]     Правильный запрос и парсинг даннх #3
Поделитесь опытом написания программы для обработки RSS ленты новостей.

Нашел описание создания списка с картинками в элементе списка http://www.javacodegeeks.com/2012/10...image-and.html
В примере данные берутся с xml файла. Мне нужно на выходе получить подобного вида список, только в виде новостей с RSS ленты.

У кого есть идеи реализации? Нашел много вариантов XML-парсеров, но определится не могу как наиболее проще и понятнее будет реализовать данный список.
Кто может помочь в реализации? Может совет дельный кто даст.
Заранее благодарен всем!!!

Добавлено через 19 часов 27 минут
Подскажите как скормить на вход парсеру url на xml - который нужно разобрать?
Java только начинаю изучать, так что не судите строго....


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
 
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
 
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
 
 
// URL rssUrl = new URL("http://cbc.ca/cmlink/rss-topstories");
 
 
public class MainActivity extends Activity {
    
    final String LOG_TAG = "myLogs";
        
    /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String tmp = "";
 
        try {
          XmlPullParser xpp = prepareXpp();
 
          while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
            switch (xpp.getEventType()) {
            // начало документа
            case XmlPullParser.START_DOCUMENT:
              Log.d(LOG_TAG, "START_DOCUMENT");
              break;
            // начало тэга
            case XmlPullParser.START_TAG:
              Log.d(LOG_TAG, "START_TAG: name = " + xpp.getName()
                  + ", depth = " + xpp.getDepth() + ", attrCount = "
                  + xpp.getAttributeCount());
              tmp = "";
              for (int i = 0; i < xpp.getAttributeCount(); i++) {
                tmp = tmp + xpp.getAttributeName(i) + " = "
                    + xpp.getAttributeValue(i) + ", ";
              }
              if (!TextUtils.isEmpty(tmp))
                Log.d(LOG_TAG, "Attributes: " + tmp);
              break;
            // конец тэга
            case XmlPullParser.END_TAG:
              Log.d(LOG_TAG, "END_TAG: name = " + xpp.getName());
              break;
            // содержимое тэга
            case XmlPullParser.TEXT:
              Log.d(LOG_TAG, "text = " + xpp.getText());
              break;
 
            default:
              break;
            }
            // следующий элемент
            xpp.next();
          }
          Log.d(LOG_TAG, "END_DOCUMENT");
 
        } catch (XmlPullParserException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
 
      
      public InputStream getInputStream(URL url) {
          try {
            return url.openConnection().getInputStream();
          } catch (IOException e) {
            return null;
          }
        }
      
    public  XmlPullParser prepareXpp() throws XmlPullParserException {
            // получаем фабрику
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            // включаем поддержку namespace (по умолчанию выключена)
            factory.setNamespaceAware(true);
            // создаем парсер
            XmlPullParser xpp = factory.newPullParser();
            // даем парсеру на вход Reader
           //..........................................................
        //    xpp.setInput(getInputStream(url), "UTF_8");
            
            return xpp;
          }   
}

В итоге нужно реализовать просмотр списка новостей с картинкой.
GoldfxTrader
0 / 0 / 0
Регистрация: 20.10.2014
Сообщений: 15
04.11.2014, 17:58  [ТС]     Правильный запрос и парсинг даннх #4
Здравствуйте. Подскажите как правильно получить данные с XML на основе примера с урока 79, если есть такая структура xml документа:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
****
<item cbc:type="story" cbc:deptid="2.633" cbc:syndicate="true">
<title>
<![CDATA[
Election day in America: 7 things to watch in midterms
]]>
</title>
<link>
[url]http://www.cbc.ca/news/world/election-day-in-america-7-things-to-watch-in-midterms-1.2822002?cmp=rss[/url]
</link>
<guid isPermaLink="false">1.2822002</guid>
<pubDate>Tue, 4 Nov 2014 05:00:00 EST</pubDate>
<author>Meagan Fitzpatrick</author>
<category>News/World</category>
<description>
<![CDATA[
<img title='U.S. President Barack Obama takes part in early voting at a polling station in Chicago, Illinois October 20, 2014. His party is at risk of losing control of the Senate today as Americans go to the polls in this year's midterm election.' height='259' alt='USA-OBAMA/' width='460' src='http://i.cbc.ca/1.2822057.1415036841!/fileImage/httpImage/image.jpg_gen/derivatives/16x9_460/usa-obama.jpg' /> <p>Americans will be marking ballots today for their representatives in Congress, in their state legislatures and governor's mansion, in their mayor's office and city halls and for many other elected offices. Here are a few things to watch for as the results come in tonight.</p>
]]>
</description>
</item>
***
с данного xml документа мне необходимы данные: title, pubDate, author, и изображение с description

Я только начинаю изучать программирование под Android так что не судите строго. Желательно разъяснить более подробно, т.к. многих нюансов не знаю.
Заранее спасибо за ответ!
GoldfxTrader
0 / 0 / 0
Регистрация: 20.10.2014
Сообщений: 15
05.11.2014, 18:51  [ТС]     Правильный запрос и парсинг даннх #5
Как разобрать секцию XML description:

XML
1
2
3
4
5
<description>
<![CDATA[
<img title='Justin Bourque, 24, of Moncton, could be facing three consecutive life sentences, with no chance of parole for 75 years for the fatal shooting of three RCMP officers. But some experts are split as to whether his actions should be considered terrorist acts.' height='259' alt='Justin Bourque' width='460' src='http://i.cbc.ca/1.2668162.1414706182!/fileImage/httpImage/image.jpg_gen/derivatives/16x9_460/justin-bourque.jpg' /> <p>Justin Bourque has been sentenced to 75 years in prison with no chance of parole for killing three RCMP officers and wounding two others, a New Brunswick judge has ruled.</p>
]]>
</description>
с которой нужно получить изображение ссылка на которое размещена в теге? Если кто сможет разьяснить - предоставлю исходный код парсера.
Yandex
Объявления
05.11.2014, 18:51     Правильный запрос и парсинг даннх
Ответ Создать тему
Опции темы

Текущее время: 17:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru