Mauvaise conversion JSON PHP > Java
Bonjour,
J'ai une application JEE qui met à disposition plusieurs webservices pour rendre disponible les données de ma BD à une application PHP.
Pour les requêtes GET, aucun problème, je récupère mes données issues de l'application JEE et je peux travailler avec dans mon application PHP.
Par contre, pour faire des requêtes POST ou PUT, le serveur Glassfish rejette ma requête depuis php (erreur : HTTP Status 415 - Unsupported Media Type).
Voici l'action Ajouter de mon webservice personne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
@Path("/personne")
@Produces({"application/xml"})
@Stateless
public class PersonneREST {
@EJB
private PersonneEJB personneEJB;
@POST
@Path("/ajouter")
@Produces({"application/json"})
@Consumes({"application/json"})
public Response ajouterPersonne(JAXBElement<Personne> personneJAXB) {
Personne p = personneJAXB.getValue();
personneEJB.creer(p);
Response reponse = Response.status(200).build();
return reponse;
} |
L'application Php est développée en CakePHP, j'utilise donc json_encode et l'adapter HttpSocket pour communiquer avec le webservice de l'application JEE.
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
|
$data = array(
'civilite' => 'Mr',
'nom' => 'PAUL',
'prenom' => 'Jean',
'adresse' => 'dfsdfdg',
'cp' => '45678',
'ville' => 'Paris',
'mail' => 'test@test.fr',
'telephone' => '090909090',
'identifiant' => 'jean',
'mdp' => 'jean'
);
$dataJSON = json_encode($data);
var_dump($dataJSON);
$response = $HttpSocket->request(array(
'method' => 'POST',
'uri' => 'http://localhost:8080/project-war/resources/personne/ajouter',
'header' => array('content-type' => 'application/json'),
'body' => $dataJSON
));
$this->set('wb', $response); |
Voici ce qu'affiche le var_dump($dataJSON)
Code:
1 2
|
string '{"civilite":"Mr","nom":"PAUL","prenom":"Jean","adresse":"dfsdfdg","cp":"45678","ville":"Paris","mail":"test@test.fr","telephone":"090909090","identifiant":"jean","mdp":"jean"}' (length=175) |
Lorsque j’exécute cette action, le serveur Glassfish me retourne l'erreur suivante :
Code:
1 2 3 4 5 6 7 8 9 10
| HTTP Status 415 - Unsupported Media Type
Type Status report
Message : Unsupported Media Type
Description : The server refused this request because the request entity is in a format not supported by the requested resource for the requested method (Unsupported Media Type).
GlassFish Server Open Source Edition 3.1.2.2 |
J'ai essayé en enlevant le @Produces({"application/json"}) et le @Consumes({"application/json"}) en utilisant un paramètre de type String qui est lui même retourné et ça fonctionne.
Code:
1 2 3 4 5
|
public String ajouterPersonne(String personne) {
personne = personne + "{ Status : 200 }";
return personne;
} |
Je dois donc mal transformer le tableau Php en JSON. Ou il me manque une subtilité.
Merci d'avance pour toute aide.