vendredi 24 avril 2015

PUT-Request

Hallo,

ich möchte gegen eine von mir erstellte REST-API einen PUT-Request durchführen.

Die Methode dafür sieht so aus:

Java Code:

  1.  
  2. public String put(String path, Map<String, Object>parameters) throws IOException{
  3. String params = "";
  4. if (parameters != null) {
  5. for (Map.Entry<String, Object> entry : parameters.entrySet()) {
  6. if (entry.getValue() != null) {
  7. params += entry.getKey() + "="
  8. + entry.getValue().toString() + "&";
  9. }
  10. }
  11. params = params.substring(0, params.length() - 1);
  12. }
  13. System.out.println(params);
  14. // Ausgabe: surname=drei&contact_group=2
  15.  
  16. URL url = new URL(this.api + path);
  17. HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  18. connection.setDoOutput(true);
  19. connection.setDoInput(true);
  20. connection.setUseCaches(false);
  21. connection.setRequestMethod("PUT");
  22. connection.setRequestProperty("Content-Length",
  23. String.valueOf(params.length()));
  24.  
  25. connection.getOutputStream());
  26.  
  27. writer.write(params);
  28. writer.flush();
  29.  
  30. InputStream is = connection.getInputStream();
  31. String response = reader.readLine();
  32. reader.close();
  33. writer.close();
  34. return response;
  35. }


Exception:
Zitat:

java.io.IOException: Server returned HTTP response code: 400 for URL: http://localhost:8000/api/v0/contacts/2
at sun.net.http://www.protocol.http.HttpURLConn...Stream(Unknown Source)
400 ist der code für eine fehlerhaft aufgebaute Nachricht, aber ich weiß nicht, was ich ändern muss.

Wenn ich "writer.flush()" entferne, fliegt zwar keine Exception mehr, aber auf Serverseite bekomme ich ein leeres Array.

Laut StackOverFlow sollte es so gehen. :bahnhof:

Falls das was bringt, die entsprechende Methode vom Server:
Code:

  public function putAction(Request $request, $id)
 {
        $parameter = $request->request->all();
        $surname = array_key_exists("surname", $parameter) ? $parameter["surname"] : "";
        $group = array_key_exists("contact_group", $parameter)? $parameter["contact_group"] : 1;

        foreach ($this->dummyEntities as $e) {
            if ($e->id == $id) {
                $e->surname = $surname;
                $e->contactGroup =$group;
                return $e;
            }
        }
        return null;
    }



PUT-Request

0 commentaires:

Enregistrer un commentaire