Problème lors de l'envoi des données json à partir d'une applict
Résolu/Fermé
Bonjour
J'ai une application java dans laquelle je dois passer des données sous forme JSON vers un fichier php (web service).
La syntaxe est correcte de mon code (java et php) et je l'ai testé dans un autre PC et ça marche correctement mais dans le mien il m'affiche toujours la valeur null ( {"nom":null,"host_name":null,"os_name":null,"os_type":null,"os_version":null} ). SVP c'est quoi le problème? je crois qu'il un problème dans le serveur ou une configuration quelques part
J'ai une application java dans laquelle je dois passer des données sous forme JSON vers un fichier php (web service).
La syntaxe est correcte de mon code (java et php) et je l'ai testé dans un autre PC et ça marche correctement mais dans le mien il m'affiche toujours la valeur null ( {"nom":null,"host_name":null,"os_name":null,"os_type":null,"os_version":null} ). SVP c'est quoi le problème? je crois qu'il un problème dans le serveur ou une configuration quelques part
A voir également:
- Problème lors de l'envoi des données json à partir d'une applict
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Annuaire portable gratuit a partir d'un nom - Forum Réseaux sociaux
- Trier des données excel - Guide
- Comment trouver un numéro à partir du nom et prénom ✓ - Forum Mobile
3 réponses
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
28 mars 2017 à 19:16
28 mars 2017 à 19:16
Bonjour,
Il faudrait voir le code correspondant pour t'en dire plus...
De plus la question c'est quoi ?
Il faudrait voir le code correspondant pour t'en dire plus...
De plus la question c'est quoi ?
- Tu voudrais supprimer les valeurs qui sont à null ?
- Tu es censé avoir d'autres valeurs que celles qui sont null ?
Main.java
CPU.java
index.php
alors quand j'execute il me donne {"nom":null,"host_name":null,"os_name":null,"os_type":null,"os_version":null}. J'ai testé le format json et j'ai utilisé les fonctions d'erreur il me donne "no error". et enfin j'ai testé le même code dans un pc d'un ami et le code marche correctement et affiche le resultat souhaité
package SWibInfo; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Scanner; import java.util.Timer; import java.util.TimerTask; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Image; import java.awt.Insets; import java.awt.Toolkit; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Scanner; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.border.EmptyBorder; import javax.swing.filechooser.FileSystemView; import org.omg.CORBA.portable.InputStream; import webservice.Cpu; public class Mainn extends JFrame { private JLabel label = new JLabel("Veuiller saisir le code � barre de votre machine: "); private JTextField textField = new JTextField(20); private JButton button = new JButton("OK"); public static void infoMachine(String str){ InetAddress ip; try { //DESKTOP-8DP4E2A ip = InetAddress.getLocalHost(); String hostName= ip.getHostName(); if(str.equals(hostName)){ System.out.println("Current host name : " + hostName); String ipAdress= ip.getHostAddress(); System.out.println("Current IP address : " + ipAdress); String nameOS= System.getProperty("os.name"); System.out.println("Operating system Name=>"+ nameOS); String osType= System.getProperty("os.arch"); System.out.println("Operating system type =>"+ osType); String osVersion= System.getProperty("os.version"); System.out.println("Operating system version =>"+ osVersion); String args = "{\"nom\":\""+hostName+"\"," + "\"host_name\":\""+hostName+"\"," + "\"os_name\":\""+nameOS+"\"," + "\"os_type\":\""+osType+"\"," + "\"os_version\":\""+osVersion+"\"" + "}"; Cpu.main(args); }else{ System.out.println("Erreur: verifier votre code"); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (SocketException e){ e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } } public Mainn(){ super("SWIB INFO"); // sets layout manager setLayout(new GridBagLayout()); GridBagConstraints constraint = new GridBagConstraints(); constraint.insets = new Insets(10, 10, 10, 10); constraint.gridx = 0; constraint.gridy = 0; add(label, constraint); constraint.gridx = 1; add(textField, constraint); constraint.gridx = 0; constraint.gridwidth = 2; constraint.gridy = 1; add(button, constraint); button.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { String str = textField.getText(); JLabel label17 = new JLabel("Your text here"); try{ int MINUTES = 15; // The delay in minutes Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { infoMachine(str); } }, 0, 1000 * 60 * MINUTES); }catch(Exception e){ e.printStackTrace();} } }); // adds window event listener addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent event) { int reply = JOptionPane.showConfirmDialog(Mainn.this, "Are you sure you want to quit?", "Exit", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (reply == JOptionPane.YES_OPTION) { dispose(); } else { return; } } }); // sets icon image String iconPath ="/SWibInfo/Vector_by_Karpiu23.png"; Image icon = new ImageIcon(getClass().getResource(iconPath)).getImage(); setIconImage(icon); pack(); // centers on screen setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new Mainn(); } }); } }
CPU.java
package webservice; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class Cpu { public static void main(String args) { try { // send as http get request URL url = new URL("http://127.0.0.1/parc/index.php?order="+args); URLConnection conn = url.openConnection(); // Get the response BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = rd.readLine()) != null) { System.out.println(line); } rd.close(); } catch (Exception e) { e.printStackTrace(); } } }
index.php
<?php
header('Content-type: application/json');
$order = $_GET["order"];
$obj = json_decode(stripslashes(html_entity_decode($order)),true);
var_dump($obj);
$nom=$obj['nom'];
$host_name = $obj['host_name'];
$os_name = $obj['os_name'];
$os_type = $obj['os_type'];
$os_version = $obj['os_version'];
// Prints "bar"
echo $obj['nom'];
$array = array("nom" => $nom, "host_name" => $host_name, "os_name" => $os_name, "os_type" => $os_type, "os_version" => $os_version);
echo json_encode($array);
echo json_last_error_msg();
echo json_last_error();
alors quand j'execute il me donne {"nom":null,"host_name":null,"os_name":null,"os_type":null,"os_version":null}. J'ai testé le format json et j'ai utilisé les fonctions d'erreur il me donne "no error". et enfin j'ai testé le même code dans un pc d'un ami et le code marche correctement et affiche le resultat souhaité
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
28 mars 2017 à 19:44
28 mars 2017 à 19:44
Qu'est-ce qui est affiché avec les System.out.println ? Parce que si ces valeurs là valent null c'est normal qu'elles se propagent ainsi dans le JSON...
System.out.println("Current host name : " + hostName); String ipAdress= ip.getHostAddress(); System.out.println("Current IP address : " + ipAdress); String nameOS= System.getProperty("os.name"); System.out.println("Operating system Name=>"+ nameOS); String osType= System.getProperty("os.arch"); System.out.println("Operating system type =>"+ osType); String osVersion= System.getProperty("os.version"); System.out.println("Operating system version =>"+ osVersion);
ibti
>
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
28 mars 2017 à 19:51
28 mars 2017 à 19:51
voila c'est le résultat :
Current host name : ibti
Current IP address : 192.168.56.1
Operating system Name=>Windows 10
Operating system type =>amd64
Operating system version =>10.0
Current host name : ibti
Current IP address : 192.168.56.1
Operating system Name=>Windows 10
Operating system type =>amd64
Operating system version =>10.0
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
28 mars 2017 à 20:48
28 mars 2017 à 20:48
Je pense que les caractères spéciaux peuvent poser problème.
Tu devrais peut être encoder le query param avant de le transmettre.
Concrètement essayes
Ainsi au lieu de faire :
http://127.0.0.1/parc/index.php?order={"nom":"ibti","host_name":"ibti","os_name":"Windows 10","os_type":"amd64","os_version":"10.0"}
Cela devrait faire :
http://127.0.0.1/parc/index.php?order=%7B%22nom%22%3A%22ibti%22%2C%22host_name%22%3A%22ibti%22%2C%22os_name%22%3A%22Windows+10%22%2C%22os_type%22%3A%22amd64%22%2C%22os_version%22%3A%2210.0%22%7D
À voir si cela permet de régler le problème... sinon c'est que le problème est plutôt dans le PHP qui n'arrive pas à comprendre le message.
Tu devrais peut être encoder le query param avant de le transmettre.
Concrètement essayes
Cpu.main(java.net.URLEncoder.encode(args, "UTF-8"));
Ainsi au lieu de faire :
http://127.0.0.1/parc/index.php?order={"nom":"ibti","host_name":"ibti","os_name":"Windows 10","os_type":"amd64","os_version":"10.0"}
Cela devrait faire :
http://127.0.0.1/parc/index.php?order=%7B%22nom%22%3A%22ibti%22%2C%22host_name%22%3A%22ibti%22%2C%22os_name%22%3A%22Windows+10%22%2C%22os_type%22%3A%22amd64%22%2C%22os_version%22%3A%2210.0%22%7D
À voir si cela permet de régler le problème... sinon c'est que le problème est plutôt dans le PHP qui n'arrive pas à comprendre le message.