bonjour à tous
je développe actuellement une application ou je dois lire le contenu d'une page php; jusqu'ici, pas de problème, j'ai testé l'algo de lecture de la page, tout se passe nickel
par contre, comme je dois d'abord recuperer des données entrées dans un Form, je dois effectuer cette connection dans un thread lancé à part
le probleme, c'est que dans un thread la methode run() ne permet pas de recuperer un quelconque resultat, alors que j'ai besoin de la valeur de la chaine de caractère lue sur la page php
j'ai bien essayé d'integrer un thread à l'interieur d'une classe pour recuperer le resultat une fois le thread terminé avec un join()... sans résultat.
je ne vois pas comment m'en sortir, si vous avez une idée...
merci d'avance
ci joint mon code:
Ensuite, l'appel dans la classe MIDlet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class Interpreter implements Runnable { private String _result; private Thread _connect; private String _url; int flag; public Interpreter(String _address) { _url = _address; _result = new String("non..."); //flag = 0; } public void run() { //flag = 1; StringBuffer _b = new StringBuffer(); StreamConnection _sc = null; //HttpConnection _c = null; InputStream _is = null; try { int _ch = 0; _sc = (StreamConnection)Connector.open(_url); _is = _sc.openInputStream(); while((_ch = _is.read()) != -1) { _b.append((char) _ch); } } catch( Exception e ) { e.printStackTrace(); _b = new StringBuffer( "error on http connection" ); } finally { if (_is != null) { try { _is.close(); }catch (IOException ioe1){ioe1.printStackTrace();} } if (_sc != null) { try { _sc.close(); }catch (IOException ioe2){ioe2.printStackTrace();} } } _result = new String(_b.toString()); } public void readContents() { _connect = new Thread(this); _connect.start(); } public String getResult() { /*if (flag == 0) return("no thread"); else*/ return(_result); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 _answer = new Interpreter(_url); _answer.readContents(); _contents = _contents.concat(_answer.getResult());
Partager