Je travaillais sur HTTP post en utilisant java et j'ai rencontré un comportement de flux bizarre. Voilà ce qui est arrivé:Java HTTP Post - comportement de flux bizarre
Func() {
String data = “MyMessage”
URL url = new URL("http://edsall:8080");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
wr.write(data);
wr.flush();
// Get the response
String line;
while ((line = rd.readLine()) != null) {
}
wr.close();
rd.close();
}
Request recvd by the server:
POST/HTTP/1.1
User-Agent: Java/1.6.0_20
Host: edsall:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-type: application/x-www-form-urlencoded
Content-Length: 0
Observons que la longueur du contenu est toujours 0. Dans un premier temps, je ne pouvais pas comprendre quel était le problème. Enfin, le ré-arrangement suivant du code a fait l'affaire:
Func() {
…
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
…
}
Je ne suis pas capable de comprendre cela clairement. Comment l'ouverture d'une poignée vers le flux d'entrée affecte-t-elle le flux de sortie?