1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Restful GET funktioniert leider POST nicht

Dieses Thema im Forum "Enterprise Java (JEE, J2EE, Spring & Co.)" wurde erstellt von Fasibio, 30. Dezember 2015.

  1. Fasibio

    Fasibio Mitglied

    Hallo,
    ich habe ein kleines Problem mit meiner Restful API.

    GET funktioniert einwandfrei.
    Leider funktioniert POST nicht.

    Die Serverseite sieht dabei wie folgt aus:

    Code (Java):
    1.    @GET
    2.     @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    3.     public List<GroupRessource> getAllGroup(){
    4.        //Mach was und retrun es         <-- Dies Funktioniert wie gewollt
    5.         return result;
    6.     }
    7.  
    8.     @POST
    9.     @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    10.     public void postGroup(JAXBElement<GroupRessource> groupres){
    11.       //Mach was <-- Dies Funktioniert nicht!!
    12.     }
    Leider kommt es bei der POST Methode nicht mal zum Aufruf.
    Das heißt: Keinerlei Ausgabe in der Cosole

    Clientseitig rufe ich das ganze mit Javascript auf:

    Code (Javascript):
    1.         var uri = MAINRESTURL+urlextension;
    2.         var request = {
    3.                     type: 'POST',
    4.                     contentType: "application/json",
    5.                    url: uri,
    6.                    dataType: 'json',
    7.                    data: JSON.stringify(data),
    8.                    error: function(jqXHR) {
    9.                        console.log("ajax error " + jqXHR.status);
    10.                    },
    11.                    success: function(data, textStatus, jqXHR){
    12.                    }
    13.                };
    14.                return $.ajax(request);
    Als Antwort erhalte ich ein 500er error.

    Anfrage Header:
    Accept application/json, text/javascript, */*; q=0.01
    Accept-Encoding gzip, deflate
    Accept-Language de,en-US;q=0.7,en;q=0.3
    Cache-Control no-cache
    Connection keep-alive
    Content-Length 65
    Content-Type application/json; charset=UTF-8
    Cookie JSESSIONID=87C113EA8385E951B7E8AFB02F6A2723
    Host localhost:8080
    Pragma no-cache
    Referer http://localhost:8080/
    User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0
    X-Requested-With XMLHttpRequest

    Da der Fehler auch auftritt, wenn ich es curl direkt versuch, vermute ich das der Fehler Serverseitig sein muss.
    curl -i -X POST -H "Content-Type:application/json" http://localhost:8080/rest/group -d '{"description":"beschreibung1","name":"gruppe1","parentGroup":-1}'

    Hat jemand ne Idee was ich falsch mache ?
     
  2. saftmeister

    saftmeister Nutze den Saft! Premium-User

    Hab es nicht getestet, aber ich vermute mal, der JSON-Parser kann mit JAXBElement<T> nichts anfangen. Welche Restful-Implementierung verwendest du denn?
     
  3. Fasibio

    Fasibio Mitglied

    Hallo
    danke für deine Hilfe
    ich nutze jersey 2.0 + gson lib
     
  4. Fasibio

    Fasibio Mitglied

    An dem Parsen von JSON zu Obj scheint es zu liegen...
    Leider funktioiert folgendes Genausowenig...
    Code (Java):
    1.    @POST
    2.    @Consumes(MediaType.APPLICATION_JSON)  
    3.    public void postGroup(GroupRessource groupres){...}
    Interesant ist, das er es ja anderesherum schafft (siehe GET Methode).
    Ich werde das Senario mal mit einem einfacherern Object Versuch, um zu sehen was ihm vielleicht am JSON Obj fehlt um daraus das eig. Obj zu basteln.
     
  5. Fasibio

    Fasibio Mitglied

    OK daran liegts mein GroupRessource Obj ist zu komplex bzw der JSON String zu abstract damit er darauf ein Obj basteln kann...
     
  6. saftmeister

    saftmeister Nutze den Saft! Premium-User

    Hi,

    ich habe ein bisschen experimentiert und es funktioniert bei mir:

    Code (Java):
    1. package de.tutorials.test.rest;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.List;
    5.  
    6. import javax.ws.rs.Consumes;
    7. import javax.ws.rs.GET;
    8. import javax.ws.rs.POST;
    9. import javax.ws.rs.Path;
    10. import javax.ws.rs.Produces;
    11. import javax.ws.rs.core.MediaType;
    12.  
    13. import org.jboss.logging.Logger;
    14.  
    15. @Path("/groupservice")
    16. public class RestService {
    17.     private Logger log = Logger.getLogger(RestService.class);
    18.  
    19.     @GET
    20.     @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    21.     public List<GroupRessource> getAllGroups() {
    22.         List<GroupRessource> result = new ArrayList<GroupRessource>();
    23.  
    24.         return result;
    25.     }
    26.  
    27.     @POST
    28.     @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    29.     public void storeGroup(GroupRessource group) {
    30.         log.debug("Group " + group);
    31.     }
    32. }
    Code (Java):
    1. package de.tutorials.test.rest;
    2.  
    3. import javax.xml.bind.annotation.XmlRootElement;
    4.  
    5. @XmlRootElement
    6. public class GroupRessource {
    7.     private int id;
    8.  
    9.     private String description;
    10.  
    11.     private String name;
    12.  
    13.     private int parentGroup;
    14.  
    15.     /**
    16.      * @return the id
    17.      */
    18.     public final int getId() {
    19.         return id;
    20.     }
    21.  
    22.     /**
    23.      * @param id
    24.      *            the id to set
    25.      */
    26.     public final void setId(int id) {
    27.         this.id = id;
    28.     }
    29.  
    30.     /**
    31.      * @return the description
    32.      */
    33.     public final String getDescription() {
    34.         return description;
    35.     }
    36.  
    37.     /**
    38.      * @param description
    39.      *            the description to set
    40.      */
    41.     public final void setDescription(String description) {
    42.         this.description = description;
    43.     }
    44.  
    45.     /**
    46.      * @return the name
    47.      */
    48.     public final String getName() {
    49.         return name;
    50.     }
    51.  
    52.     /**
    53.      * @param name
    54.      *            the name to set
    55.      */
    56.     public final void setName(String name) {
    57.         this.name = name;
    58.     }
    59.  
    60.     /**
    61.      * @return the parentGroup
    62.      */
    63.     public final int getParentGroup() {
    64.         return parentGroup;
    65.     }
    66.  
    67.     /**
    68.      * @param parentGroup
    69.      *            the parentGroup to set
    70.      */
    71.     public final void setParentGroup(int parentGroup) {
    72.         this.parentGroup = parentGroup;
    73.     }
    74. }
     

    Anhänge:

  7. Fasibio

    Fasibio Mitglied

    Danke für deine Unterstützung bei mir gehts nun auch...
    Das Problem war das mein übermitteltes JSON Object zu wenig Attribute besessen hat um in ein Java Object konvertiert werden zu können,.
     
  8. Fasibio

    Fasibio Mitglied

    Ich finde den Problem gelöst BTN nicht :(
     
  9. sheel

    sheel I love Asm Administrator

    Passt schon :)
     
Die Seite wird geladen...