Bonjour,
Je sollicite votre aide afin de récupérer une page HTML passée par URL et pouvoir ensuite parser cette page.
Je travaille avec GWT.
Merci beaucoup pour votre aide.
Bonjour,
Je sollicite votre aide afin de récupérer une page HTML passée par URL et pouvoir ensuite parser cette page.
Je travaille avec GWT.
Merci beaucoup pour votre aide.
Bonjour,
Je pense qu'avec la classe RequestBuilder tu devrais pouvoir faire cela !
Regarde le code suivant :
Dans la fonction onResponseReceived, tu as en paramètre un objet de type Response, tu devrais donc pouvoir récupérer le corps de la réponse grâce à cet objet puis la parser ensuite.
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 String url = "http://www.google.fr"; RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url)); try { Request request = builder.sendRequest(null, new RequestCallback() { public void onError(Request request, Throwable exception) { // Couldn't connect to server (could be timeout, SOP violation, etc.) } public void onResponseReceived(Request request, Response response) { if (200 == response.getStatusCode()) { // Process the response in response.getText() } else { // Handle the error. Can get the status text from response.getStatusText() } } }); } catch (RequestException e) { // Couldn't connect to server }
Merci beaucoup de votre.
Je teste et je reviens vers vous
Oui ça marche très bien. Merci beaucoup.
Mais comment fait-on pour le parsing?
Tout dépend du format du fichier que tu reçois.
Par exemple si tu reçois des message au format xml, alors ça sera facile, tu pourras utiliser une API comme JAXP où JAXB pour parser ton fichier.
Après si c'est un format maison, il faudra que tu le fasses toi même avec un BufferReader par exemple, comme ci tu faisais la lecture d'un fichier texte.
Désolé mais j'ai repris votre code aujourd'hui et ça marche pas
Qu'elle est l'erreur qui s'affiche ?
C'est le truc le plus bizarre aucune réponse ne figure. Il va bien dans onResponseReceived mais n'affiche rien: la response.getStatustext() revoie 0
C'est peut-être un problème de sécurité, je vais tâcher de regarder !
Déjà fait et même réponse!!
J'ai un peu modifié le code j'ai dut passer par une servlet et toujours la même réponse
Voici le code de ma Classe
et celui là est celui de la servlet
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 public class JsonGwtProject implements EntryPoint { public void onModuleLoad() { final Button fetchDataButton = new Button("Fetch data"); fetchDataButton.addStyleName("sendButton"); RootPanel.get("fetchDataButtonContainer").add(fetchDataButton); fetchDataButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { fetchDataFromServer(); } }); } private void fetchDataFromServer() { try { RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, "/jsongwtproject"); rb.setCallback(new RequestCallback() { @Override public void onResponseReceived(Request request, Response response) { System.out.print(response.getText()); } @Override public void onError(Request request, Throwable exception) { Window.alert("Error occurred" + exception.getMessage()); } }); rb.send(); } catch (RequestException e) { Window.alert("Error occurred" + e.getMessage()); } }
Sachant que "/jsongwtproject" est le path de la servlet
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 public class ProductServlet extends HttpServlet { private static final long serialVersionUID = 8032611514671727168L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, "http://www.google.fr"); rb.setHeader("Content-Type","application/x-www-form-urlencoded"); rb.sendRequest(null,new RequestCallback() { @Override public void onResponseReceived(Request request, Response response) { System.out.print(response.getText()); } @Override public void onError(Request request, Throwable exception) { Window.alert("Error occurred" + exception.getMessage()); } }); } catch (RequestException e) { Window.alert("Error occurred" + e.getMessage()); } } }
J'ai l'impression que les règles de sécurité ne permettent pas de recevoir de réponse sur un autre domaine, regarde ce post. En fait tu ne peux que requêter sur le domaine où est déployé ton appli GWT, par exemple pour l'adresse http://localhost:8080, ça fonctionne bien mais pour http://google.fr ça ne fonctionne pas !
J'ai trouvé HTMLUNIT mais ça marche pas vraiment!!
En plus c'est pour les tests
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager