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
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());
   }
%>
si une bonne âme comprend le pourquoi du comment de ce comportement, j'aimerai bien qu'il me l'explique.

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/&nbsp;/ /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;