# PUT-Request



## Saheeda (24. Apr 2015)

Hallo,

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

Die Methode dafür sieht so aus:


```
public String put(String path, Map<String, Object>parameters) throws IOException{
		String params = "";
		if (parameters != null) {
			for (Map.Entry<String, Object> entry : parameters.entrySet()) {
				if (entry.getValue() != null) {
					params += entry.getKey() + "="
							+ entry.getValue().toString() + "&";
				}
			}
			params = params.substring(0, params.length() - 1);
		}
		System.out.println(params);
                // Ausgabe:    surname=drei&contact_group=2	
		
		URL url = new URL(this.api + path);
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		connection.setDoOutput(true);
		connection.setDoInput(true);
		connection.setUseCaches(false);
		connection.setRequestMethod("PUT");
		connection.setRequestProperty("Content-Length",
				String.valueOf(params.length()));		
	
		OutputStreamWriter writer = new OutputStreamWriter(
				connection.getOutputStream());
		
		writer.write(params);
		writer.flush();		
		
		InputStream is = connection.getInputStream();
		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		String response = reader.readLine();
		reader.close();
		writer.close();		
		return response;
	}
```

Exception:


> java.io.IOException: Server returned HTTP response code: 400 for URL: http://localhost:8000/api/v0/contacts/2
> at sun.net.www.protocol.http.HttpURLConnection.getInputStream(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:

```
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;
    }
```


----------

