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.UnsupportedEncoding
hata koduna sahip bir hücre seçin:protocol.http.UnsupportedEncoding
hata koduyla ilgili bilgiler aşağıda gösterildiği gibidir:Günlükleri görüntüle 'yi tıklayın ve
415
ile 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
apigee
tarafından döndürüldüğünü gösterir. veyatarget
. - Hata Kodu:
protocol.http.UnsupportedEncoding
ile eşleşmelidir.
- Hata Kaynağı: Bu sütun, hatanın
- Hata Kaynağı
apigee
ise bu durum, isteğin gönderildiği anlamına gelir.Content-Encoding
üstbilgisinde desteklenmeyen kodlama yer alıyor. - Hata Kaynağı
target
ise bu, arka uç sunucusunun yanıt,Content-Encoding
baş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 Type
hatasının oluşmasını bekleyin veya- Sorunu yeniden oluşturabiliyorsanız API çağrısını yeniden oluşturun
415 Unsupported Media Type
hata.
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.UnsupportedEncoding
vetarget
, hatası,"utf-8"
için desteklenmeyen kodlama değerinin arka uç sunucusunaContent-Encoding
ekleyin.Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.UnsupportedEncoding
X-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 Type
hatası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
415
hataları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
415
Hataları olup olmadığını kontrol edin (sorun oluştuysa) veya415
ile hâlâ başarısız olan istekler varsa bunları kontrol edin. X-Apigee-fault-code eşleştirmesinde
415
hatası bulursanızprotocol.http.UnsupportedEncoding
değ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.Response405WithoutAllowHeader
X-Apigee-fault-source MP
X-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.UnsupportedEncoding
ve Hata Kaynak,apigee
veyaMP
değ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
faultstring
iç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 Type
hatası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-Encoding
istek 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- Encoding
başlığına gönderir. Bu değer Apigee Edge'de desteklenen kodlama. Bu nedenle bu istek, şu hata koduyla birlikte415 Unsupported Media Type
hatası 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-Encoding
başlıkta belirtildi
- Yalnızca
Yukarıdaki örnekte, istek yükünün
gz
uzantısı vardır. içeriğingzip
olması gerekir. İstek başlığını göndererek sorunu çözebilirsinizContent-Encoding: gzip
olarak ve istek yükügzip
biç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ğı
target
değerine sahipse bu durum, arka uç sunucusu tarafından gönderilen yanıtınContent-Encoding
baş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
faultstring
inceleyin.faultstring
, desteklenmeyen kodlama.Örnek hata mesajı:
"faultstring":"Unsupported Encoding \"UTF-8\""
-
Yukarıdaki hata mesajında, desteklenmeyen kodlamanın değerinin
faultstring
iç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 Type
hatası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-Encoding
yanı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-Encoding
başlığı - Apigee Edge'e desteklenen biçimdeki yanıt yükü ve biçimle eşleşir.
Content-Encoding
baş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,
415
API isteğinin bir parçası olarakContent-Encoding
baş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
415
hatası 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ı
415
hatasını yeniden oluşturmak için kullanılancurl
komutunu 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_log
Yer: 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