Envoyer des données depuis un programme java vers une page PHP
Bonjour,
Depuis ce matin, je tente, j'expérimente une solution pour avoir un programme java qui envoit des données via JSON vers une page PHP.
A terme la page PHP enregistrera les données reçu dans une base de données.
Le problème que j'ai, c'est que la page php est bien contactée par le programme java, mais aucune données valide.
J'ai comme valeur du headers et de la variable $_POST : 1
Donc, je sèche un peu :(, est-ce un problème côté java ou du côté de la page PHP ou du serveur web ?
Mon code java (largerement inspiré des samples du site apache httpclient)
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
|
public String postData() throws JSONException
{
// Create a new HttpClient and Post Header
// HttpClient httpclient = new DefaultHttpClient();
// https://stackoverflow.com/questions/24788521/why-i-am-getting-defaulthttpclient-is-deprecated
// https://hc.apache.org/httpcomponents-client-5.3.x/quickstart.html
String result = "";
// form parameters.
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("table", "TBLBascule_robot"));
nvps.add(new BasicNameValuePair("host", "goe"));
nvps.add(new BasicNameValuePair("alive", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"))));
try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
System.out.println("Create the POST");
ClassicHttpRequest httpPost = ClassicRequestBuilder.post("http://<my web server>/dataProcessor/basculeweb.php")
.setEntity(new UrlEncodedFormEntity(nvps))
.build();
System.out.println("Execute the POST");
httpclient.execute(httpPost, response -> {
System.out.println(response.getCode() + " " + response.getReasonPhrase());
final HttpEntity entity2 = response.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity2);
return null;
});
httpclient.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return result;
} |
Le code PHP
Code inspiré d'un exemple trouvé sur internet.
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
|
include('DatabaseFunctions-bascule.php');
/*$json = $_POST['jsonpost'];
echo "JSON: \n";
echo "--------------\n";
var_dump($json);
echo "\n\n";*/
$headers = getallheaders();
print_r($headers);
error_log("Content of headers is : " . print_r($headers));
error_log("Content of POST : " . print_r($_POST));
$data = json_decode($headers['json']);
//$data = json_decode($json);
echo "Array: \n";
echo "--------------\n";
var_dump($data);
echo "\n\n";
$table = $data->tablename;
echo "Result: \n";
echo "--------------\n";
echo "Table : ".$table;
switch($table)
{
case "TBLBascule_robot":
$dbcon = connexion(LOGIN, PASSWORD, DB, HOST);
$hostname = $data->host;
$alive = $data->alive;
executeQuery("update ".$table." set host = '".$hostname."', alive='".$alive."'", $dbcon);
$dbcon->close();
break;
default: break;
}
?> |