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)
Le code PHP
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 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; }
Code inspiré d'un exemple trouvé sur internet.
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 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; } ?>
Partager