Restful @POST Methode für GWT bzw. SmartGWT

Andyx1975

Mitglied
Hallo,

ich erstelle zurzeit eine Webapplication mit SmartGWT / GWT. Den Datentransfer möchte ich über Restful mit JPA und Jersey realisiert. @Get und @Delete habe ich bereichts realisiert und funktioniert hervorragend. Ich hab jetzt das Problem, dass ich nicht weiss, wie ich den neu anzulegenden Datensatz an den Application Server übermittele:

Ich habe die folgenden Methode geschrieben, die den Webservice aufruft und den XML Inthalt "<Benutzer><ID>1</ID><Name>Andy</NAME></Benutzer>" als String versendet:

Java:
private void storeNewRecord()
    {
        /*Daten die als String via Webservice versendet werden sollen*/
        String sendData = "<Benutzer><ID>1</ID><Name>Andy</NAME></Benutzer>";
        
        /*URL zum Aufruf des Webservices...Adresse =>  http://127.0.0.1:8888/rest/emails/create/email/*/
        String dataUrl = GWT.getHostPageBaseURL() + "rest/emails/create/email/";
        System.out.println( "DataUrl: " + dataUrl );
        
        RequestBuilder builder = new RequestBuilder( RequestBuilder.POST, dataUrl );
        builder.setHeader( "content-type", "application/xml" );

        try
        {
            Request response = builder.sendRequest( sendData, /*data String wich will be send via restful*/
                                                    new RequestCallback()
            {
                @Override
                public void onResponseReceived( Request request, Response response )
                {
                    int statusCode = response.getStatusCode();

                    if ( statusCode == Response.SC_OK )
                    {
                        String responseBody = response.getText();
                        System.out.println( "RestResponse: " + responseBody );
                    }
                    else
                    {
                        SC.say( "An unexpected error occured: Code " + statusCode );
                    }
                }

                @Override
                public void onError( Request request, Throwable exception )
                {
                    SC.say( String.valueOf( exception ) );
                }
            } );
        }
        catch ( RequestException e )
        {

            e.printStackTrace();
            SC.say( String.valueOf( e ) );
        }
        
        
        editorForm.saveData();

        if ( sectionContents != null )
        {
            sectionContents.setExpanded( true );
            sectionDetails.setExpanded( true );
        }
        else
        {
            closeWindow();
        }
    }


Der Aufruf ansich funktioniert, beim debuggen springt er in die @post Methode. Diese sieht wie folgt aus:
Java:
@POST
    @Path( "create/email" )
    @Consumes(MediaType.APPLICATION_XML)
    @Produces( MediaType.APPLICATION_XML )
    public DEmail createEmail( @PathParam( "xml" ) String xml)
    {
        // Hier muss ich den XML entgegennehmen, weiss aber nicht wie? Der Übergabeparameter xml ist immer NULL. Weiss jemand die Lösung meines Problemes?

    }

Mir ist nicht klar, wie ich in der Post Methode den xml Inhalt, den ich in Als String "sendData" versende aufrufen kann? Weiss jemand weiter?
 
ok habe es selbst herausgefunden. Die Post Methode muss wie folgt aussehen:
Java:
 @POST
    @Path( "create/email" )
    @Consumes(MediaType.APPLICATION_XML)
    @Produces( MediaType.APPLICATION_XML )
    public DEmail createEmail(String xml)
    {
        // Hier muss ich den XML entgegennehmen, weiss aber nicht wie? Der Übergabeparameter xml ist immer NULL. Weiss jemand die Lösung meines Problemes?
        System.out.println("XML: " + xml);
        DEmail email = new DEmail();
        return email;
    }
 
Zurück