Problème lors de l'envoi des données json à partir d'une applict [Résolu/Fermé]

Signaler
-
 ibti -
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

3 réponses

Messages postés
16319
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
29 avril 2021
2 824
Bonjour,

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
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é
Messages postés
16319
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
29 avril 2021
2 824
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);
>
Messages postés
16319
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
29 avril 2021

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
Messages postés
16319
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
29 avril 2021
2 824
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
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.
ça marche :D merci énormément :D :D