Inhalt

    Serverantwort 415 Unsupported Media Type

    HTTP-Statuscode 415 (Unsupported Media Type)

    Der HTTP-Statuscode 415 tritt auf, wenn ein Server einen Anfrage abweist, weil der gesendete Medientyp nicht unterstützt wird. Dies geschieht häufig, wenn ein Client versucht, Daten in einem Format zu senden, das der Server nicht verarbeiten kann. Um die Hintergründe besser zu verstehen, betrachten wir die Ursachen, Beispiele und Lösungsansätze für diesen Statuscode.

    415 - Unsupported Media Type

    Ursachen für den Statuscode 415

    • Falscher Content-Type-Header: Verschiedene APIs unterstützen unterschiedliche Datenformate. Wenn der gesendete Header Content-Type nicht dem erwarteten Format entspricht, gibt der Server den Status 415 zurück.
    • Fehlende Unterstützung für das Format: Der Server unterstützt möglicherweise einfach das gesendete Datenformat nicht. Zum Beispiel, wenn die API JSON erwartet und der Client XML sendet.
    • Fehler bei der Datenkodierung: Falsche Kodierung der Daten oder falsche Struktur der Anfrage können ebenfalls zu einem Fehler 415 führen.

    Praktische Beispiele

    1. JSON-Format: Wenn ein Client JSON sendet, aber den Header Content-Type auf text/plain setzt, kann der Server diese Anfrage nicht verarbeiten und gibt 415 zurück.
    2. XML-Format: Ein Client versucht, Daten im XML-Format zu senden, während der Server Daten im JSON-Format erwartet. Auch in diesem Fall wird der Status 415 zurückgegeben.
    3. Ungültige Dateien: Wenn eine API ein Bild im JPEG-Format erwartet und der Client eine PNG-Datei mit einem falschen Header sendet, wird der Server 415 zurückgeben.
    Beispiel Erwarteter Content-Type Gesendeter Content-Type Ergebnis
    JSON-Daten application/json text/plain 415 Unsupported Media Type
    XML-Daten application/xml application/json 415 Unsupported Media Type
    JPEG-Bild image/jpeg image/png 415 Unsupported Media Type

    Fehlerbehebung des Status 415 in verschiedenen Programmiersprachen

    JavaScript (Node.js)

    const axios = require('axios');
    
    axios.post('https://example.com/api', data, {
        headers: {
            'Content-Type': 'application/json'
        }
    })
    .then(response => {
        console.log(response.data);
    })
    .catch(error => {
        if (error.response && error.response.status === 415) {
            console.error('Unsupported Media Type: Überprüfen Sie den Content-Type-Header');
        }
    });

    Python (Requests)

    import requests
    
    headers = {
        'Content-Type': 'application/json'
    }
    response = requests.post('https://example.com/api', json=data, headers=headers)
    
    if response.status_code == 415:
        print('Unsupported Media Type: Überprüfen Sie den Content-Type-Header')

    Java (HttpURLConnection)

    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class HttpClient {
        public static void main(String[] args) {
            try {
                URL url = new URL("https://example.com/api");
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setRequestMethod("POST");
                connection.setRequestProperty("Content-Type", "application/json");
                connection.setDoOutput(true);
    
                OutputStream os = connection.getOutputStream();
                os.write(data.getBytes());
                os.flush();
                os.close();
    
                if (connection.getResponseCode() == 415) {
                    System.out.println("Unsupported Media Type: Überprüfen Sie den Content-Type-Header");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }