204 No Content

DaSt

Bekanntes Mitglied
Hallo,
wir haben letzte Woche mit Webservices begonnen. Für eine Übungsaufgabe haben wir nun die Lösung bekommen und wenn ich diese abtippe und einen Studenten anlegen will (methode createStudent in der Klasse StudentResource) bekomme ich einen 204 - No Content Error. Der folgende Code + Anleitung wurde vom Prof. bereitgestellt.
Man soll Studenten anlegen und suchen und wieder löschen können.
Man soll den RESTClient (Addon für Firefox nutzen)
Beim create eines Studenten als Methode POST verwenden,URL = http://localhost:8444/webresources/studienangelegenheiten/student, Header->Custom Header-> Name = Content-Type, Value = application/json
Mein json Body sieht so aus:
Code:
{
"aktuelleECTS" : "200",
"vorname": "Max",
"nachname": "Mustermann",
"adresse":{
"ort": "Musterstadt",
"strasse":"Unistrasse"
},
"matNr":"123"
}

Klicke ich nun auf senden bekomme ich den Statuscode: 204 no Content. Laut Screenshot (Des Prof.)sollte 200 Ok kommen. Auch wenn ich im Browser http://localhost:8444/webresources/studienangelegenheiten/student/123 eingebe kommt nur eine leere Seite.

Hier die Studentenklasse
Java:
public class Student {
   
    private int aktuelleETS;
    private String vorname;
    private String nachname;
    private Adresse adresse;
    private int matNr;

    public Student() {
    }

    public Student(int aktuelleETS, String vorname, String nachname, Adresse adresse, int matNr) {
        this.aktuelleETS = aktuelleETS;
        this.vorname = vorname;
        this.nachname = nachname;
        this.adresse = adresse;
        this.matNr = matNr;
    }

...getter & setter


Java:
public class Adresse {
   
    private String ort;
    private String strasse;

   
    public Adresse() {
    }
   
    public Adresse(String ort, String strasse) {
        this.ort = ort;
        this.strasse = strasse;
    }

...getter & setter


Java:
@Path("studienangelegenheiten")
public class StudentResource {
   
     // Aufruf mit: http://localhost:8444/webresources/studienangelegenheiten/student/12345
    // HTTP-Methode GET auswählen
    // kann auch normal im Browser getestet werden
   @GET
    @Path("student/{id}")
   @Produces(MediaType.APPLICATION_XML)
    public Student getStudentById(@PathParam("id") int id){
    
        System.out.println("return new Student with id: "+id);
        return new Student(new Random().nextInt(210),"Max", "Mustermann",new Adresse("Regensburg", "Unistr"), id);
       
    }
   
   
   
    // Aufruf mit: http://localhost:8444/webresources/studienangelegenheiten/student
    // HTTP-Methode DELETE auswählen
    @DELETE
    @Path("student/{id}")
     @Produces(MediaType.APPLICATION_JSON)
    public void deleteStudentById(@PathParam("id") int id){
        System.out.println("Delete Student with number:" +id);
    }
   
   
    // Aufruf mit: http://localhost:8444/webresources/studienangelegenheiten/student
    // HTTP-Methode POST und custom header "Content-Type: application/xml" oder application/json
    @POST
    @Path("student")
    @Consumes( {MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
    public void createStudent(Student s){
        System.out.println("Create new Student: "+s);
    }
   
   
    // Aufruf mit: http://localhost:8444/webresources/studienangelegenheiten/students?from=1&to=19
    @GET
    @Path("students")
    @Produces(MediaType.APPLICATION_JSON)
    public Student[] getStudentsByIdRange(@QueryParam("from")int from, @QueryParam("to") int to){
        if(to<from){
             return null;
        }
      Student[] students = new Student[(to-from)+1];
        for(int id = from; id <= to; id++) {
            students[id - from] = new Student(new Random().nextInt(210),"Max", "Mustermann",new Adresse("Regensburg", "Unistr"), id);
        }
        return students;       
      
    }

Java:
public class ServerREST {
   
    public static void main(String[] args) throws IllegalArgumentException, IOException, URISyntaxException {
       
        // JAX-RS bzw. Jersey konfigurieren...
        ResourceConfig config = new ResourceConfig();
        // ... indem lediglich Klasse(n) registriert werden, die @Path-Annotationen haben (hier nur eine)
        config.register(StudentResource.class);

        // Webserver für Port 8080 generieren (Teil des JDK!)
        HttpServer server = HttpServer.create(new InetSocketAddress(8444), 0);
        // Handler erzeugen (Handler = Objekt, das Request bekommt und Response erzeugt)
        HttpHandler handler = RuntimeDelegate.getInstance().createEndpoint(config, HttpHandler.class);
        // Webserver den Handler (oben) einem bestimmten Kontext zuordnen
        // Der Handler ist jetzt zuständig für alle Requests, die mit http://localhost:8080/webresources beginnen
        server.createContext("/webresources", handler);
        // Webserver starten...
        server.start();

        // Dialog anzeigen (blockierend)
        JOptionPane.showMessageDialog(null, "Server stoppen...");
        server.stop(0);
    }
}

Vielen Dank
 

Ähnliche Java Themen

Neue Themen


Oben