Pb HttpURLConnection => Error 500
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:
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.
:help:
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 :roll:
le code qui marche en perl si ça peut aider
Code:
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; |