2013-05-18 21 views
6

İstemci tarafında geliştirmek için RestSharp kullanıyorum. Ayrıca sunucu tarafında özel API'm için Ruby Grape gemini kullanıyorum. Ben sunucu üzerinde error 404 alıyorum RestRequest için başlığını ayarlamak için çalışıyorum Üzüm mücevher mükemmelRestSharp Üstbilgi değişikliğini kabul et

curl -H Accept=application/vnd.twitter-v1+json /statuses/public_timeline 

çalışır konsolu üzerinden application/vnd.twitter-v1+json

için HTTP başlık f.e Ve Test komutu Kabul ayarlayarak sürüm yapmak Fakat yapabilirsiniz.

Neden olduğu hakkında hiçbir fikrim yok. Sunucu 406 error döndürür başka bir sorun buldum - ama benim durumumda 404.

Kabul etme başlığı için özel değer nasıl koyabilirim? Sen AddHeader yöntemle özel bir Accept başlığını ayarlayabilirsiniz

cevap

5

... Eğer JSON kendin serisini istekli olup olmadığını

var client = new RestClient("http://example.com/api"); 
var request = new RestRequest("statuses/public_timeline", Method.GET); 
request.AddHeader("Accept", "application/vnd.twitter-v1+json"); 
var response = client.Execute(request); 
var json = response.Content; 

Bu iyi çalışması gerekir. RestSharp documentation about deserialization itibaren sizin için otomatik deserialization yapar jenerik Execute<T> yöntemin, yararlanmak istiyorsanız, sorunlarla olacak


...

:

RestSharp içerir XML ve JSON işlemek için serpiciler. Bir yanıt aldıktan sonra RestClient, sunucu tarafından döndürülen İçerik Türü'ne göre kullanmak için doğru serpiştiriciyi seçer. Varsayılanlar geçersiz kılınabilir (bkz. Özelleştirme). Yerleşik desteklenen içerik türleri şunlardır:

  • application/json - JsonDeserializer
  • application/xml - XmlDeserializer
  • metin/json - JsonDeserializer
  • text/xml - XmlDeserializer
  • * - XmlDeserializer

Bu (ve diğer tüm içerik türleri belirtilmemiş) varsayılan olarak, yanıtın içerik türü listelenenlerden biri değilse, RestSharp verilerinizde XmlDeserializer'ı kullanmaya çalışacağını söylüyor. Bu ekstra çalışma ile özelleştirilebilir.