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:
Der Aufruf ansich funktioniert, beim debuggen springt er in die @post Methode. Diese sieht wie folgt aus:
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?
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?