Bonjour,
Je voudrais parser du XML distant via SAX
voici à quoi ressemble ma classe pour récupérer les données :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class data {
private XMLReader saxReader;
private SimpleContentHandler simpleContentHandler;
private List<String> citations;
public data() throws SAXException, IOException, ParserConfigurationException {
saxReader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
simpleContentHandler = new SimpleContentHandler();
saxReader.setContentHandler(simpleContentHandler);
URL url = new URL("http://www.evene.fr/rss/citation_jour.xml");
saxReader.parse(new InputSource(url.openStream()));
}
} |
Et dans mon Activity (je développe pour Android) j'ai :
1 2 3 4 5 6 7 8 9 10 11 12
| try {
data d = new data();
Log.v("debug", "IT WORK !");
} catch (SAXException e) {
Log.v("debug", "NOT WORKING ! 1");
Log.v("debug", "SAXException : " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
Log.v("debug", "NOT WORKING ! 2");
Log.v("debug", "IOException : " + e.getMessage());
e.printStackTrace();
} |
L'erreur viendrais de cette ligne :
saxReader.parse(new InputSource(url.openStream()));
Et les erreurs associées sont :
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
| 10-24 11:11:15.150: E/AndroidRuntime(922): java.lang.RuntimeException: Unable to start activity ComponentInfo{guigui.first.project/guigui.first.project.GuiguiActivity}: android.os.NetworkOnMainThreadException
10-24 11:11:15.150: E/AndroidRuntime(922): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
10-24 11:11:15.150: E/AndroidRuntime(922): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
10-24 11:11:15.150: E/AndroidRuntime(922): at android.app.ActivityThread.access$600(ActivityThread.java:122)
10-24 11:11:15.150: E/AndroidRuntime(922): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
10-24 11:11:15.150: E/AndroidRuntime(922): at android.os.Handler.dispatchMessage(Handler.java:99)
10-24 11:11:15.150: E/AndroidRuntime(922): at android.os.Looper.loop(Looper.java:137)
10-24 11:11:15.150: E/AndroidRuntime(922): at android.app.ActivityThread.main(ActivityThread.java:4340)
10-24 11:11:15.150: E/AndroidRuntime(922): at java.lang.reflect.Method.invokeNative(Native Method)
10-24 11:11:15.150: E/AndroidRuntime(922): at java.lang.reflect.Method.invoke(Method.java:511)
10-24 11:11:15.150: E/AndroidRuntime(922): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-24 11:11:15.150: E/AndroidRuntime(922): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-24 11:11:15.150: E/AndroidRuntime(922): at dalvik.system.NativeStart.main(Native Method)
10-24 11:11:15.150: E/AndroidRuntime(922): Caused by: android.os.NetworkOnMainThreadException
10-24 11:11:15.150: E/AndroidRuntime(922): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1084)
10-24 11:11:15.150: E/AndroidRuntime(922): at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
10-24 11:11:15.150: E/AndroidRuntime(922): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
10-24 11:11:15.150: E/AndroidRuntime(922): at java.net.InetAddress.getAllByName(InetAddress.java:220)
10-24 11:11:15.150: E/AndroidRuntime(922): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
10-24 11:11:15.150: E/AndroidRuntime(922): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
10-24 11:11:15.150: E/AndroidRuntime(922): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
10-24 11:11:15.150: E/AndroidRuntime(922): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
10-24 11:11:15.150: E/AndroidRuntime(922): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
10-24 11:11:15.150: E/AndroidRuntime(922): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
10-24 11:11:15.150: E/AndroidRuntime(922): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
10-24 11:11:15.150: E/AndroidRuntime(922): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
10-24 11:11:15.150: E/AndroidRuntime(922): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
10-24 11:11:15.150: E/AndroidRuntime(922): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
10-24 11:11:15.150: E/AndroidRuntime(922): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
10-24 11:11:15.150: E/AndroidRuntime(922): at java.net.URL.openStream(URL.java:462)
10-24 11:11:15.150: E/AndroidRuntime(922): at guigui.first.project.data.<init>(data.java:46)
10-24 11:11:15.150: E/AndroidRuntime(922): at guigui.first.project.GuiguiActivity.onCreate(GuiguiActivity.java:37)
10-24 11:11:15.150: E/AndroidRuntime(922): at android.app.Activity.performCreate(Activity.java:4465)
10-24 11:11:15.150: E/AndroidRuntime(922): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
10-24 11:11:15.150: E/AndroidRuntime(922): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) |
Si vous avez une idée d'où çà pourrait venir.
Merci
Partager