Zawartość

    Odpowiedź serwera 415 Unsupported Media Type

    HTTP status 415 (Unsupported Media Type)

    HTTP status 415, znany jako "Unsupported Media Type", występuje, gdy serwer odmawia przetworzenia żądania z powodu nieobsługiwanego typu mediów. Zdarza się to, gdy klient próbuje wysłać dane w formacie, który serwer nie jest w stanie przetworzyć. W tej artykule omówimy szczegółowo przyczyny tego statusu oraz sposoby jego obsługi.

    415 - Unsupported Media Type

    Przyczyny wystąpienia statusu 415

    • Błędny nagłówek Content-Type

      Różne API obsługują różne formaty danych. Jeśli wysłany nagłówek Content-Type nie odpowiada oczekiwanemu formatowi, serwer zwróci status 415.

    • Brak wsparcia dla formatu

      Serwer może nie obsługiwać formatu danych, który został wysłany. Na przykład, jeśli API oczekuje JSON, a klient wysyła XML.

    • Błędy w kodowaniu danych

      Niewłaściwe kodowanie danych lub błędna struktura żądania również mogą prowadzić do błędu 415.

    Praktyczne przykłady

    1. Format JSON

      Na przykład, klient wysyła JSON, ale ustawia nagłówek Content-Type na text/plain. Serwer nie będzie w stanie przetworzyć tego żądania i zwróci 415.

    2. Format XML

      Klient próbuje wysłać dane w formacie XML, ale serwer oczekuje danych w formie JSON. W takim przypadku także nastąpi zwrócenie kodu 415.

    3. Niedopuszczalne pliki

      Jeśli API oczekuje obrazu w formacie JPEG, a klient wysyła plik PNG z niewłaściwym nagłówkiem, serwer zwróci 415.

    Naprawa błędu 415 w różnych językach programowania

    Język Przykład
    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: Sprawdź nagłówek Content-Type');
        }
    });
                    
    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: Sprawdź nagłówek Content-Type')
                    
    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: Sprawdź nagłówek Content-Type");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
                    

    W tej artykule omówiliśmy status 415, jego przyczyny oraz przykłady. Przedstawiliśmy również sposoby naprawy tego błędu w różnych językach programowania, co może pomóc w skuteczniejszym rozwiązywaniu problemów z interakcjami z API.