Comment puis-je envoyer une requête POST en Java?

Quand j'ai envoyer la demande à partir de JSP-je utiliser ce code

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<form method="post"  action="http://translate.intelsoft.az" id="tform" name="ftext">
<input class="gogo1"  value="a" name="l" id="l1" /> <div class="il">
<p>Rusca</p>
<textarea class="ilkin1" name="t" id="t1" >
выыававыавыавыавфыа
выыававыавыавыавфыа
выыававыавыавыавфыа
выыававыавыавыавфыа</textarea>
<div><input class="gogo" type="submit" value="Tərcümə1" name="b1" /></div></div>    </form>

</body>
</html> 

et la réponse est correcte, de sorte que je vois ma valeur du paramètre. Mais quand j'envoie à partir de Java je n'ai pas de réponse correcte. Je pense que les paramètres ne sont pas transmis correctement. Voici mon code Java:

String urlParameters = "t=выыававыавыавыавфыа&l=a";
String request = "http://translate.intelsoft.az";
URL url = null;
try {
url = new URL(request);
} catch (MalformedURLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} 
HttpURLConnection connection = null;
try {
connection = (HttpURLConnection) url.openConnection();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}           
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setInstanceFollowRedirects(false); 
try {
connection.setRequestMethod("POST");
} catch (ProtocolException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} 
connection.setRequestProperty("Content-Type", "text/html"); 
connection.setRequestProperty("charset", "utf-8");
connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
connection.setUseCaches (false);
DataOutputStream wr;
try {
wr = new DataOutputStream(connection.getOutputStream ());
wr.writeBytes(urlParameters);
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
wr.close();
connection.disconnect();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}

Quel est le problème ici?

  • Vous pouvez utiliser une bibliothèque comme apache commons httpclient, ou encore Apache CXF de JAX-RS client, pour vous épargner beaucoup de ce système de choses.