HTTP Header - Programmation
Marsh Posté le 20-03-2001 à 12:24:25
Cthulhu a écrit a écrit : le probleme est que le cookie est genere lors de l'ouverture de la session et doit etre verifier lors dune reouverture |
Je suis d'accord avec ca mais pour renvoyer le cookie au server il faut que tu utilises le header "Cookie" et non pas "Set-Cookie" (le header Set-Cookie ne peut être envoyé que par un server).
Si le server supporte le HTTP1.1 il doit autoriser pas les connections persistantes si il voit que le client supporte le HTTP. -> Je t'invite à coupler ton header "Connection: Keep-Alive" avec l'option HTTP1.1 que tu paceras apres le nom de fichier à uploader comme ca ca éliminera le cas où le server ignore le header "Connection:" si le client ne spécifie pas qu'il supporte lui aussi le HTTP1.1
[edit]--Message édité par zeltron--[/edit]
Marsh Posté le 20-03-2001 à 12:39:37
zeltron a écrit a écrit : Je suis d'accord avec ca mais pour renvoyer le cookie au server il faut que tu utilises le header "Cookie" et non pas "Set-Cookie" (le header Set-Cookie ne peut être envoyé que par un server). |
oui, tu as raison, je ne lai pas precise, mais jai tenu compte de cette remarque par la suite, jai modifié cela,...ca ne marche toujours pas, voici mon nouveau code:
public void test() {
HttpURLConnection connection = null;
PrintWriter out = null;
BufferedReader in = null;
String response = null, line = null;
String boundary=new String("--------------boundary--------------" );
String streamsend=new String("--"+boundary+"\r\n" );
try {
URL url = new URL(URL);
connection= (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST" );
connection.setRequestProperty("Content-Type", "text/plain" );
connection.setRequestProperty("Cookie", "sesessionid=LOU3LVAAAAACPLAQABYR5MY;Path=/" );
connection.setRequestProperty("Connection", "Keep-Alive" );
out = new PrintWriter(connection.getOutputStream());
response = "";
streamsend+="Content-Type: text/plain";
streamsend+="\r\n";
streamsend+="contenu document\r\n";
streamsend+="--"+boundary+"\r\n";
out.print(streamsend);
////////////////////////////////////////////////////
//affichage //
////////////////////////////////////////////////////
for (int k = 0; connection.getHeaderField(k) != null; k++) {
if (connection.getHeaderFieldKey(k) != null)response += "\"" +connection.getHeaderFieldKey(k) + ":\"";
response += connection.getHeaderField(k);
response += "\n";
System.out.println(k);
}
line = "";
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = in.readLine()) != null) {
response += line;
}
in.close();
out.close();
}
catch (Exception e) {
e.printStackTrace();
connection.disconnect();
}
System.out.println(response+"\n"+streamsend);
}
et le resultat:
HTTP/1.1 200 ok
"Date:"Tue, 20 Mar 2001 11:33:16 GMT
"Server:"IBM_HTTP_Server/1.3.6.2 Apache/1.3.7-dev (Win32)
"Connection:"close
"Content-Type:"text/html
=>on dirait quil ne tient absolument pas compte de setproperty...
Marsh Posté le 20-03-2001 à 13:04:18
Je ne connais pas les méthodes de la classe que tu utilises mais tu devrais je pense vérifier si il ne faut pas conclure ta série de connection.setRequestProperty(xxxxx) par un appel a une méthode qui envoie la ligne vide au server (a la fin de l'envoi de tous champs du header)qui lui indique que le header est fini.
Marsh Posté le 20-03-2001 à 14:27:20
c ce que jai cru pendant un moment, mais en fait la seule methode qui correspondrait a cela c "connect()" et apparemment, chaque setproperty etablit la connexion, car meme en, faisant un disconnect avant, g une exception comme quoi il est deja connecte...
merci de ton aide en tous cas...
Marsh Posté le 20-03-2001 à 11:45:45
merci de ta reponse, voici les precisions qui pourrait taider a maider....
en fait, il sagit denvoyer un requete du client vers le serveur dans l but de faire telecharger un fichier a partir du serveur. le probleme est quele cookie est genere lors de louverture de la session et doit etre verifier lors dune reouverture
voici lentete complete:
HTTP/1.1 200 ok
"Date:"Tue, 20 Mar 2001 10:19:41 GMT
"Server:"IBM_HTTP_Server/1.3.6.2 Apache/1.3.7-dev (Win32)
"Set-Cookie:"sesessionid=LOHZRFYAAAACNLAQABYR5MY;Path=/
"Cache-Control:"no-cache="set-cookie,set-cookie2"
"Expires:"Thu, 01 Dec 1994 16:00:00 GMT
"Connection:"close
"Content-Type:"text/html
=>je ne passe pas par un proxy
je v de ce pas verifier sur le serveur sil autorise les connections persistantes
[edit]--Message édité par Cthulhu--[/edit]