2013-10-09 12 views
12

:Bu API ayrıştırma desteklemez şekilde kodlanmış giriş Bir uç veri göndermek için çalışılmıştır ancak veri boyutu çok büyük olduğunu söyleyen bu yüzden POST yöntemini değiştirerek hata alınan

This API does not support parsing form-encoded input. 

bir bitiş noktasına 2.730 bayt yani

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
"reason": "parseError", 
    "message": "Parse Error" 
} 
], 
    "code": 400, 
"message": "Parse Error" 
} 
} 

veri büyük miktarda göndermek için en iyi yolu nedir ve onu hallederim vardır: Sonraki hala yazı ile ve şimdi alıyorum, uygulama/json türünü değiştirdi uygun şekilde? Benim durumumda, söz konusu alan bir dizide tutulacak uygulama motorunun 500 karakter sınırını aştığımda Metin türündedir.

Ayrıca birçok şeyde olduğu gibi, bu benim yerel makinede inşaat büyük, sadece canlı app motor örneğinde bu hatayı veriyor.

Teşekkürler!

+0

bir dize bir veri deposu varlık izin dolmak 1MB olabilir (anahtar ve başka bir şey için boşluk bırakmak gerekir) . Girişi sürdürmezseniz, bir istekte 32 MB'lik bir dizeyi kabul edebilirsiniz. Ben fark nedir @bossylobster – bossylobster

+0

Eğer son nokta bir varlık türünü varsa sadece bir dize ya da Long, vb eklemek zorunda ardından Adlandırılan özellik gibi bir şey varsa o yayının üzerine bir JSON nesnesi alır, ama olmasıdır URL'ye. JSON'u standartlaştırmak ya da JSON'u kullanmaya/kullanmaya zorlamak için API uç noktalarını tanımladığımızda bize daha fazla kontrol vermenin daha iyi olacağını düşünüyorum. – Shaun

+0

Tanım olarak adlandırılmış özellik, bir yol parametresi olarak biter. Bununla birlikte, parametre adı çarpışmasına izin verilir, böylece onu vücutta da tanımlayabilirsiniz. – bossylobster

cevap

21

Sorunun ilgili olup olmadığından emin, ama ben Alýnmadý "form kodlanmış giriş ayrıştırma desteklemez Bu API." Hata Böyle bir POST mesajı göndermek için curl kullanmaya kalkışan zaman:

curl -X POST -d '{"name": "Foo"}' http://foo.appspot.com/_ah/api/foo/1/endpoint 

Sorun içerik türü ayarı değildi olmasıydı. Content-Type ile curl POST'lar: komut satırında belirtilmemişse, uygulama/x-www-form-urlencoded. Google bulut uç noktaları bu içerik türünü kabul etmiyor. Ben içerik türünü içerecek şekilde bukle çağırmayı değiştiğinde

, işe yaradı:

curl -X POST -d '{"name": "Foo"}' --header "Content-Type: application/json" http://foo.appspot.com/_ah/api/foo/1/endpoint 
İlgili konular