Bonjour,
dans le cadre d'un projet à la boite, on me demande de créer un script en JSP pour tester le message de réponse envoyé par une URL
Mon problème est que :
si j'initialise ma variable urlString à : "http://monserveur/servlet/Servlet?form=TESTCONNEX";
j'obtiens bien en reponse la page html comme quoi il a besoin du nom de serveur et des username/password
mais dès que j'initialise ma variable urlString avec des & dedans :
"http://monserveur/servlet/Servlet?form=TESTCONNEX&server=server.test.com&username=UserTest&pwd=UserTest";
il me renvoit une erreur 500
Je n'y connais rien (enfin pas grand chose) en JSP mais j'ai pondu ça à partir de diverses recherches sur le net
si une bonne âme comprend le pourquoi du comment de ce comportement, j'aimerai bien qu'il me l'explique.
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 <%@page pageEncoding="UTF-8"%> <%@page contentType="text/html; charset=UTF-8"%> <% response.addHeader("Cache-Control", "no-cache"); %> <%@ page import="java.util.*" %> <%@ page import="java.text.*" %> <%@ page import="java.net.*" %> <%@ page import="java.io.*" %> <% out.print("Server Test"); HttpURLConnection connection; String urlString = "http://monserveur/servlet/Servlet?form=TESTCONNEX&server=server.test.com&username=UserTest&pwd=UserTest"; URL url = new URL(urlString); String _cookie =""; URLConnection urlConnection = url.openConnection(); if (urlConnection != null) { _cookie = urlConnection.getHeaderField("set-cookie"); } out.print("\n<br>Cookies: " + _cookie); connection = (HttpURLConnection)url.openConnection(); connection.connect(); out.print("\n<br>Testing : "+urlString); out.print("\n<br>ResponseCode=" + connection.getResponseCode() + "\n<br>Response Message = " + connection.getResponseMessage() ); try { InputStream inS; if (connection.getResponseCode() >= 400) { inS = connection.getErrorStream(); } else { inS = connection.getInputStream(); } BufferedReader in = new BufferedReader( new InputStreamReader(inS) ); String inputLine; StringBuffer html = new StringBuffer(""); out.print("<FIELDSET><LEGEND>Code Grabbed</LEGEND><XMP><font size=1>"); while ((inputLine = in.readLine()) != null) { html.append(inputLine+"\n"); } out.print(html.toString()); out.print("</font></XMP></FIELDSET>"); out.print("\n<br><hr>"+connection.getURL()); } catch (MalformedURLException e){ out.print("\n<br>MalformedURLException : "+e+" - "+e.getMessage()); } catch (IOException e) { out.print("\n<br>IOException : "+e+" - "+e.getMessage()); } %>
![]()
Pour info j'ai créé un script en perl qui fait la même chose et qui marche très bien mais que je ne peux mettre en production ! c'est dommage mais ce n'est pas moi qui décide malheureusement![]()
le code qui marche en perl si ça peut aider
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 #!/usr/bin/perl use strict; print "Content-Type = text/html\n\n"; require LWP::UserAgent; my $url2test ="http://monserveur/servlet/Servlet?form=TESTCONNEX&server=server.test.com&username=UserTest&pwd=UserTest"; # Create a user agent object use LWP::UserAgent; use HTTP::Cookies; my $ua = LWP::UserAgent->new; $ua->cookie_jar( HTTP::Cookies->new( file => "lwpcookies.txt", autosave => 1 ) ); $ua->agent("Mozilla/8.0" . $ua->agent); # Create a request my $req = HTTP::Request->new (GET => $url2test); $req->header('Accept' => 'text/html'); # Pass request to the user agent and get a response back my $res = $ua->request($req); # Check the outcome of the response if ($res->is_success) { my $content = $res->content; $content =~ s/ / /gi; if ($content =~ m/connexion ARS ok/i) { print "CONNEXION OK"; } else { print "\n\nCONNEXION KO\n\n"; print "<FIELDSET><LEGEND>Code</LEGEND><XMP>".$res->content."</XMP></FIELDSET>\n"; } } else { print "Error: " . $res->status_line . "\n"; } exit;
Partager