2009-03-02 14 views
8

"Uygulama/x-www-form-urlencoded" gönderim verilerini kabul eden bir RESTful web hizmeti son noktasını tanımlayan bir W3C belirtimine dayalı bir WCF hizmeti yapıyorum. WCF varsayılan olarak ileti kodlaması bu tür desteklemez ve ben şöyle bir sözleşme yaratma farklı örnekler bir dizi bulduk: HttpUtility.ParseQueryString yöntemi kullanılarak postData akışına deşifre uygulanması dahilinde ardındanWCF ile "application/x-www-form-urlencoded" sonrası verileri desteklemenin en iyi yolu?

XElement Query_Post(Stream postData); 

Ve .

WCF'de "application/x-www-form-urlencoded" desteklemenin daha güçlü bir şekilde yazıldığını bilen var mı?

benim çalışma sözleşmesi olmak istiyorum:

XElement Query_Post(string query, string [] params); 
+3

24 saat sonra kimsenin böyle bir temel düşüncenin nasıl yapılacağını bilememesi gerçeği WCF'nin huzurlu şeyler inşa etmek için en iyi platform olmadığını göstermelidir. OpenRasta'yı deneyin, x-www-form-urlencoded verilerini işlemek için yerleşik bir codec bileşeni olduğuna inanıyorum. –

cevap

7

iyi yolu Raw HTTP POST with WCF ya da ne diyorsun gibi Stream kullanmaktır. Bunun nedeni, WCF'nin iletişim düzeyi fiziksel düzen öğelerinin tümünü hizmet kodundan çıkarmasıdır. İdeal olarak, sadece anahtarı çevirerek SOAP veya REST'e dönüşebilecek bir servis yapmak istersiniz.

Doğal olarak bunu desteklemek için, muhtemelen WebHttpBinding ürününü uzatmanız veya kendi ciltlemenizi yapıp custom encoder uygulamanız gerekir. Bağlantılı yazı gibi çıkış için simetrik bu diyor. WCF'nin XML/JSON olmayan öğeler çıkarması için kollarını bükmeniz gerekir. Bir POX biçimlendirici ve form url kodlanmış biçimlendirici içerir ve kolayca kendi oluşturmanıza olanak sağlar

https://github.com/mikeobrien/WcfRestContrib

:

+0

Ölü olmayan bir bağlantıyla ilgili bir örneğiniz var mı? –

2

WCF REST Katkı kütüphanesi bu işlevselliği sağlar. Biçimlendiriciler, mime türleriyle eşlenir ve içerik türüne göre varlık gövdesini serileştirmek/serileştirmek için otomatik olarak seçilir ve üstbilgileri kabul eder.

+0

URL bozuk olduğu için downvoted ... – ewitkows

+0

Bu cevap 6 yaşında şef. – hcoverlambda

+0

Ve artık herhangi bir yardım sunmuyor – ewitkows