コンテンツ

    サーバー応答 415 Unsupported Media Type

    HTTP ステータスコード 415 (Unsupported Media Type)

    HTTP ステータスコード 415 は、サーバーがリクエストを処理できない場合に返されます。このエラーは、クライアントがサポートされていないメディアタイプでデータを送信しようとしたときに発生します。以下では、このエラーが発生する理由や具体的な例、そして解決方法について詳しく説明します。

    415 - Unsupported Media Type

    415 ステータスコードの原因

    • 不正な Content-Type ヘッダー

      API は異なるデータ形式をサポートしています。送信された Content-Type ヘッダーが期待される形式と一致しない場合、サーバーは 415 ステータスコードを返します。

    • 形式のサポートがない

      サーバーが送信されたデータ形式をサポートしていない場合もあります。たとえば、API が JSON を期待しているのに、クライアントが XML を送信した場合です。

    • データのエンコーディングエラー

      データのエンコーディングが不正であったり、リクエストの構造が間違っていると、415 エラーが発生することがあります。

    具体的な例

    1. JSON形式の例

      クライアントが JSON を送信する際に、Content-Type ヘッダーを text/plain に設定した場合、サーバーはリクエストを処理できず、415 ステータスコードを返します。

    2. XML形式の例

      クライアントが XML 形式のデータを送信しようとしたが、サーバーが JSON を期待している場合、同様に 415 エラーが返されます。

    3. 無効なファイルの例

      API が JPEG 形式の画像を期待しているのに、クライアントが PNG ファイルを送信した場合、サーバーは 415 ステータスコードを返します。

    さまざまなプログラミング言語でのエラー 415 の修正方法

    プログラミング言語 コード例
    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: 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: 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: Content-Type ヘッダーを確認してください");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
                

    以上の内容から、HTTP ステータスコード 415 の原因や具体例、さまざまなプログラミング言語での解決方法について説明しました。正しい Content-Type ヘッダーを設定することで、このエラーを回避することができます。