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 :
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 : 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 @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; }
Voici ce qu'affiche le var_dump($dataJSON)
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 $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);
Lorsque j’exécute cette action, le serveur Glassfish me retourne l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Je dois donc mal transformer le tableau Php en JSON. Ou il me manque une subtilité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public String ajouterPersonne(String personne) { personne = personne + "{ Status : 200 }"; return personne; }
Merci d'avance pour toute aide.
Partager