المحتويات

    استجابة الخادم 415 Unsupported Media Type

    رمز حالة HTTP 415 (نوع الوسائط غير مدعوم)

    يظهر رمز حالة HTTP 415 عندما يرفض الخادم معالجة الطلب بسبب نوع وسائط غير مدعوم. يحدث ذلك عندما يحاول العميل إرسال بيانات بتنسيق لا يمكن للخادم معالجته. في هذه المقالة، سنستعرض بشكل دقيق أسباب ظهور هذا الرمز، وكيفية التعامل مع هذه الحالة بشكل صحيح.

    415 - Unsupported Media Type

    أسباب ظهور رمز الحالة 415

    • عنوان Content-Type غير صحيح

      تدعم واجهات برمجة التطبيقات المختلفة تنسيقات بيانات مختلفة، وإذا كان عنوان Content-Type المرسل لا يتطابق مع التنسيق المتوقع، فإن الخادم سيعيد رمز 415.

    • عدم دعم التنسيق

      قد لا يدعم الخادم ببساطة تنسيق البيانات المرسل. على سبيل المثال، إذا كانت واجهة برمجة التطبيقات تتوقع JSON، بينما يرسل العميل XML.

    • أخطاء في ترميز البيانات

      يمكن أن تؤدي الأخطاء في ترميز البيانات أو الهيكل غير الصحيح للطلب أيضًا إلى ظهور خطأ 415.

    أمثلة عملية

    1. تنسيق JSON

      مثال: يقوم العميل بإرسال JSON، ولكن يحدد عنوان Content-Type على text/plain. لن يتمكن الخادم من معالجة هذا الطلب وسيرجع 415.

    2. تنسيق XML

      مثال: يحاول العميل إرسال بيانات بتنسيق XML، بينما يتوقع الخادم بيانات على شكل JSON. في هذه الحالة، سيتم أيضًا إرجاع الرمز 415.

    3. ملفات غير صالحة

      مثال: إذا كانت واجهة برمجة التطبيقات تتوقع صورة بتنسيق 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('نوع الوسائط غير مدعوم: تحقق من عنوان 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('نوع الوسائط غير مدعوم: تحقق من عنوان 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("نوع الوسائط غير مدعوم: تحقق من عنوان Content-Type");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }