Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Belirti
İstemci uygulaması 415 Unsupported Media Type HTTP durum kodunu alır ve
hata kodu: protocol.http.UnsupportedEncoding .
Hata mesajı
İstemci uygulaması aşağıdaki yanıt kodunu alır:
HTTP/1.1 415 Unsupported Media Type
Ayrıca, aşağıda gösterilene benzer bir hata mesajı da görebilirsiniz:
{
"fault":{
"faultstring":"Unsupported Encoding \"UTF-8\"",
"detail":{
"errorcode":"protocol.http.UnsupportedEncoding"
}
}
}Olası nedenler
Bu hata, Content-Encoding üstbilgisinin değeri
İstemci tarafından Apigee'ye gönderilen HTTP isteği veya arka uç sunucusu tarafından
Apigee şunu içermez:
spesifikasyona göre Apigee tarafından desteklenen kodlama
RFC 7231, bölüm 6.5.13: 415 Desteklenmeyen Medya Türü.
Bu hatanın olası nedenleri aşağıda açıklanmıştır:
| Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
|---|---|---|
| İstekte desteklenmeyen kodlama kullanılmış | Content-Encoding istek başlığı, desteklenmeyen kodlama içeriyor.
Apigee Edge'dir. |
Edge Herkese Açık ve Private Cloud kullanıcıları |
| Yanıtta desteklenmeyen kodlama kullanıldı | Arka uç sunucusunun yanıt başlığı Content-Encoding, şu kodlamayı içeriyor:
Apigee Edge tarafından desteklenmez. |
Edge Herkese Açık ve Private Cloud kullanıcıları |
Sık kullanılan teşhis adımları
Hatayı teşhis etmek için aşağıdaki yöntemlerden birini kullanabilirsiniz:
API Monitoring
API Monitoring'i kullanarak hatayı teşhis etmek için:
- Apigee Edge hesabınızda oturum açın.
Sorunu incelemek istediğiniz kuruluşa geçin:
- Analiz > API İzleme > İnceleme sayfası.
- Hataları gözlemlediğiniz zaman aralığını seçin.
- Proxy filtresinin Tümü olarak ayarlandığından emin olun.
- Zaman ile Hata Kodu'nun grafiğini çizin.
Aşağıda gösterildiği gibi
protocol.http.UnsupportedEncodinghata koduna sahip bir hücre seçin:
protocol.http.UnsupportedEncodinghata koduyla ilgili bilgiler aşağıda gösterildiği gibidir:
Günlükleri görüntüle 'yi tıklayın ve
415ile başarısız olan isteklerden birini genişletin. hatası oluştu:
- Günlükler penceresinde aşağıdaki ayrıntılara dikkat edin:
- Hata Kaynağı: Bu sütun, hatanın
apigeetarafından döndürüldüğünü gösterir. veyatarget. - Hata Kodu:
protocol.http.UnsupportedEncodingile eşleşmelidir.
- Hata Kaynağı: Bu sütun, hatanın
- Hata Kaynağı
apigeeise bu durum, isteğin gönderildiği anlamına gelir.Content-Encodingüstbilgisinde desteklenmeyen kodlama yer alıyor. - Hata Kaynağı
targetise bu, arka uç sunucusunun yanıt,Content-Encodingbaşlığında desteklenmeyen kodlama içeriyor.
İzleme aracı
İzleme aracını kullanarak hatayı teşhis etmek için:
-
oturumu izleme ve şunlardan birini yapın:
415 Unsupported Media Typehatasının oluşmasını bekleyin veya- Sorunu yeniden oluşturabiliyorsanız API çağrısını yeniden oluşturun
415 Unsupported Media Typehata.
Show all FlowInfos (Tüm Akış Bilgilerini Göster) seçeneğinin etkin olduğundan emin olun:
- Başarısız isteklerden birini seçin ve izini inceleyin.
- İzlemenin farklı aşamaları arasında gezinin ve hatanın nerede oluştuğunu bulun.
Hatayı genellikle İstek gönderilen hedeften sonraki bir akışta bulabilirsiniz. sunucu aşamasını görebilirsiniz:
İzdeki hatanın değerini not edin.
Yukarıdaki örnek iz, hatayı
Unsupported Encoding "utf-8"olarak gösteriyor. Başlangıç hata, istek arka uç sunucusuna gönderildikten sonra Apigee tarafından ortaya çıkıyorsa arka uç sunucusununContent-Encodingşeklindeki yanıt başlığını şu değerle gönderdiğini"utf-8", bu bir Apigee'de desteklenen kodlamayı inceleyebilirsiniz.- İzlemedeki AX (Analytics Verilerinin Kaydedilen) Aşamasına gidin ve tıklayın.
Aşama Ayrıntıları'nda Hata / Yanıt Üstbilgileri bölümüne ilerleyin bir proje yöneticisine X-Apigee-fault-code ve X-Apigee-fault-source değerleri aşağıda gösterildiği gibidir:
X-Apigee-fault-code ve X-Apigee-fault-source değerlerini şu şekilde görürsünüz:
protocol.http.UnsupportedEncodingvetarget, hatası,"utf-8"için desteklenmeyen kodlama değerinin arka uç sunucusunaContent-Encodingekleyin.Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.UnsupportedEncodingX-Apigee-fault-source target- Şunu kullanıp kullanmadığınızı kontrol edin:
proxy zinciri oluşturma; yani hedef sunucu/hedef uç noktası,
proxy'si var.
Bunu belirlemek için İstek hedef sunucuya gönderildi aşamasına geri dönün. Curl'ü Göster'i tıklayın.
- Hedef Sunucuya Gönderilen İsteğin Kısmı penceresi açılır. Buradan aşağıdaki işlemleri yapabilirsiniz: hedef sunucu ana makine takma adını belirler.
- Hedef sunucu ana makine takma adı, bir sanal ana makine takma adına işaret ediyorsa bu bir proxy
zincirlemedir. Bu durumda, zincirli proxy için yukarıdaki adımların tümünü tekrarlamanız gerekene kadar
415 Unsupported Media Typehatasına gerçekte neyin neden olduğunu belirlersiniz. - Hedef sunucu ana makine takma adı, arka uç sunucunuzu işaret ediyorsa bu durum, arka uç sunucunuz desteklenmeyen kodlamayı Apigee'ye geçiriyordur.
Nginix erişim günlükleri
NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:
- Private Cloud kullanıcısıysanız aşağıdakileri belirlemek için NGINX erişim günlüklerini kullanabilirsiniz:
HTTP
415hatalarıyla ilgili önemli bilgiler. NGINX erişim günlüklerini kontrol edin:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- Belirli bir sürede
415Hataları olup olmadığını kontrol edin (sorun oluştuysa) veya415ile hâlâ başarısız olan istekler varsa bunları kontrol edin. X-Apigee-fault-code eşleştirmesinde
415hatası bulursanızprotocol.http.UnsupportedEncodingdeğerini, sonra da X-Apigee-fault-source.NGINX erişim günlüğünden örnek 415 hatası:
NGINX erişim günlüğünden yukarıdaki örnek giriş, X- Apigee-fault-code ve X-Apigee-fault-source:
Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source MPX-Apigee-fault-source daX-Apigee-fault-source X-Apigee-fault-source değerine sahip olabilir.
Neden: İstekte desteklenmeyen kodlama
Teşhis
- API kullanılarak gözlemlenen hatanın Hata Kodu ve Hata Kaynağı'nı belirleme içinde açıklandığı şekilde izleme veya NGINX erişim günlükleri Yaygın teşhis adımları.
- Hata Kodu
protocol.http.UnsupportedEncodingve Hata Kaynak,apigeeveyaMPdeğerine sahipse bu, istemci uygulama tarafından gönderilen isteğin, istek başlığında desteklenmeyen kodlama olmasıContent-Encoding. - HTTP isteğinin bir parçası olarak iletilen desteklenmeyen kodlamanın değerini belirleyebilirsiniz.
aşağıdaki yöntemlerden birini kullanın:
Hata mesajı
Hata mesajını kullanarak:Apigee Edge'den alınan hata mesajının tamamına erişiminiz varsa Şuraya:
faultstring.faultstring, desteklenmeyen son kodlamayla ilgilidir.Örnek Hata Mesajı:
"faultstring":"Unsupported Encoding \"UTF-8\""
Yukarıdaki hata mesajında, desteklenmeyen kodlamanın değerinin
faultstringiçinde görüldüğü gibi“UTF-8”.“UTF-8”, Apigee Edge'de desteklenen bir kodlama olmadığından bu istek şu hata koduyla birlikte415 Unsupported Media Typehatasıyla başarısız oluyor:protocol.http.UnsupportedEncoding.
Gerçek istek
Gerçek isteği kullanarak:- İstemci uygulaması tarafından yapılan asıl isteğe erişiminiz yoksa şuraya gidin: Çözüm.
- İstemci uygulamanın yaptığı asıl isteğe erişiminiz varsa
şu adımları uygulayın:
Content-Encoding.istek başlığına iletilen değeri belirleyinContent-Encodingistek başlığına iletilen değer bir değilse Desteklenen kodlama bölümünde listelenen değerler arasında bu hatanın nedeni hakkında bilgi edinin.Örnek istek:
curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz
Yukarıdaki örnek istek,
"UTF-8"değeriniContent- Encodingbaşlığına gönderir. Bu değer Apigee Edge'de desteklenen kodlama. Bu nedenle bu istek, şu hata koduyla birlikte415 Unsupported Media Typehatası vererek başarısız oldu:protocol.http.UnsupportedEncoding.
Çözünürlük
- Apigee tarafından desteklenen kodlama listesine göz atın: Desteklenen kodlama.
- İstemci uygulamasının her zaman aşağıdakileri gönderdiğinden emin olun:
- Yalnızca
Content-Encodingüstbilgisi değeri olarak desteklenen kodlama istek - Apigee Edge'e desteklenen biçimdeki ve şu biçimle eşleşen istek yükü
Content-Encodingbaşlıkta belirtildi
- Yalnızca
Yukarıdaki örnekte, istek yükünün
gzuzantısı vardır. içeriğingzipolması gerekir. İstek başlığını göndererek sorunu çözebilirsinizContent-Encoding: gzipolarak ve istek yükügzipbiçiminde:curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
Neden: Yanıtta desteklenmeyen kodlama
Teşhis
- API kullanılarak gözlemlenen hatanın Hata Kodu ve Hata Kaynağı'nı belirleme Aşağıdaki bölümde açıklandığı şekilde İzleme, Trace Aracı veya NGINX erişim günlükleri Yaygın teşhis adımları.
- Hata Kaynağı
targetdeğerine sahipse bu durum, arka uç sunucusu tarafından gönderilen yanıtınContent-Encodingbaşlığı. - HTTP yanıtının bir parçası olarak iletilen desteklenmeyen kodlama değerini,
aşağıdaki yöntemlerden birini kullanarak arka uç sunucusuna bildirin:
Hata mesajı
Hata mesajını kullanarak:Apigee Edge'den alınan hata mesajının tamamına erişiminiz varsa
faultstringinceleyin.faultstring, desteklenmeyen kodlama.Örnek hata mesajı:
"faultstring":"Unsupported Encoding \"UTF-8\""
-
Yukarıdaki hata mesajında, desteklenmeyen kodlamanın değerinin
faultstringiçinde görüldüğü gibi“UTF-8”.“UTF-8”, Apigee Edge'de desteklenen bir kodlama olmadığından, bu istek, şu hata koduyla birlikte415 Unsupported Media Typehatasıyla başarısız oluyor:protocol.http.UnsupportedEncoding.
İzleme aracı
Trace'i kullanma:- Başarısız istekle ilgili izine sahip değilseniz şuraya gidin: Çözüm.
- Hatayla ilgili bir iz yakaladıysanız, desteklenmeyen sorunlu
Content-Encodingyanıtının bir parçası olarak arka uç sunucusu tarafından iletilen kodlama üstbilgisini İzleme aracında açıklandığı şekilde değiştirin.
Çözünürlük
- Apigee tarafından desteklenen kodlama listesine göz atın: Desteklenen kodlama
- Arka uç sunucusunun her zaman aşağıdakileri gönderdiğinden emin olun:
- Yalnızca desteklenen kodlamayı
İstekte
Content-Encodingbaşlığı - Apigee Edge'e desteklenen biçimdeki yanıt yükü ve biçimle eşleşir.
Content-Encodingbaşlıkta belirtildi
- Yalnızca desteklenen kodlamayı
İstekte
Desteklenen kodlama
Aşağıdaki tabloda Apigee Edge tarafından desteklenen kodlama biçimi listelenmektedir:
| Başlık | Kodlama | Açıklama |
|---|---|---|
Content-Encoding |
gzip |
Unix gzip biçimi |
deflate |
Bu biçim, sıkıştırma sıkıştırma algoritmasına sahip zlib yapısını kullanır. |
Spesifikasyon
Apigee, 415 Unsupported Media Type hata yanıtıyla
aşağıdaki RFC spesifikasyonunu görebilirsiniz:
| Spesifikasyon |
|---|
| RFC 7231, bölüm 6.5.13: 415 Desteklenmeyen Medya Türü |
Dikkat edilmesi gereken önemli noktalar
Aşağıdakileri göz önünde bulundurun:
- Apigee,
415API isteğinin bir parçası olarakContent-Encodingbaşlığını etkinleştirdikten sonra:- Bu tür isteklerle ilgili izini yakalayamazsınız.
-
Google Ads tarafından gönderilen hata yanıtının biçimini veya içeriğini CMPFault,{/Message gibi politikaları kullanan Apigee Edge.
Bunun nedeni, bu hatanın İleti İşleyen’in herhangi bir aşamasında gerçekleşen çalıştırılabilir.
- Apigee, desteklenmeyen kodlamanın atlatılması nedeniyle
415hatası döndürürse Apigee yerine arka uç sunucunuzdan gelen yanıt başlığını girin, ardından düzeltilmesi arka uç sunucusuna bağlanmaya çalışın. Lütfen arka uç ekibinizle aşağıda açıklandığı şekilde çalışın: bu sorunu düzeltin.
Hâlâ Apigee Edge Destek Ekibi'nden yardım almak istiyorsanız Teşhis bilgileri toplanmalıdır'a gidin.
Teşhis bilgileri toplanmalıdır
Hâlâ Apigee Destek Ekibi'nden yardım almanız gerekiyorsa aşağıdaki Apigee Edge Destek Ekibi ile iletişime geçin:
Herkese açık Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Kuruluş adı
- Ortam adı
- API Proxy adı
415hatasını yeniden oluşturmak için kullanılancurlkomutunu tamamlayın- API istekleri için izleme dosyası
Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Başarısız istekler için tam hata mesajı gözlemlendi
- Ortam adı
- API Proxy paketi
- API istekleri için izleme dosyası
NGINX erişim günlükleri
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logYer: ORG, ENV ve PORT# şununla değiştirilir: gerçek değerler.
- Mesaj İşleyici sistem günlükleri
/opt/apigee/var/log/edge-message- processor/logs/system.log