Bonjour à tous,
Pour un besoin spécifique j'essaye d'envoyer deux requêtes HTTP 1.1 post à un serveur dans une même connection socket.
Mon problème est que j'obtient une réponse pour la première requête mais aucune réponse pour la deuxième requête sachant que j'ai bien mis la connection Connection: Keep-Alive dans le header.
Je ne trouve pas le problème surtout que je n'ai aucune erreur dans le log mais le retour contient seulement la réponse pour la première requête
Si quelqu'un a d'idée à ce propos qu'il l'éclairci svp et merci d'avance
Voilà mon code :
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 Socket socket = new Socket(addr, port); String strRequest1="myxmlRequest1...."; //send request wr.write("POST / HTTP/1.1\r\n"); wr.write("Host: HOST\r\n"); wr.write("User-Agent: Java\r\n"); wr.write("Content-Length: " + strRequest1.length() + "\r\n"); wr.write("Content-Type: text/xml\r\n"); wr.write("Connection: Keep_alive\r\n\r\n"); wr.write(strRequest1 +"\r\n"); wr.flush(); // Get response rd = new BufferedReader(new InputStreamReader( socket.getInputStream(), "UTF8")); System.out.println( "BufferedReader rd------------------------------>" + rd); System.out.println( "readLine------------------------------>" + rd.toString()); while ((line = rd.readLine()) != null) { System.out.println("output---------->" + output); output = output + line + "\n"; } System.out.println("taille response" + output.length()); // Request 2 String s2="myxmlRequest2..."; //send request BufferedWriter wr2 = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream(), "UTF8")); System.out.println(s2); wr2.write("POST / HTTP/1.1\r\n"); wr2.write("Host: HOST\r\n"); wr2.write("User-Agent: Java\r\n"); wr2.write("Content-Length: " + s2.length() + "\r\n"); wr2.write("Content-Type: text/xml\r\n"); wr2.write("Connection: Close\r\n\r\n"); wr2.write(s2 + "\r\n"); wr2.flush(); // get response BufferedReader rd2 = new BufferedReader(new InputStreamReader( socket.getInputStream(), "UTF8")); output=""; while ((line = rd2.readLine()) != null) { System.out.println("output2---------->" + output); output = output + line + "\n"; } System.out.println("s2 response" + output.length()+"s2"+output);
Partager