2009-08-21 39 views
12

Bir Java Web Hizmeti ile etkileşimde bulunmak için klasik Web Hizmeti Proxy'sini kullanan eski bir uygulamam var. Bir süre sonra Web Hizmeti kutusu, hizmete erişmek için her istekte özel bir HTTP üstbilgisi gönderilmesini gerektirdi. Aksi takdirde, talepler tamamen ortadan kaldırıldı (bu, bir çeşit yönlendirici gereksinimidir). Nedeni ne olursa olsun istek üzerine özel bir HTTP üstbilgisini enjekte etmem gerek.Özel Http Başlıklarını Web Hizmetine Ekleme Proxy

Özel üstbilgi eklemek gibi şeyler yapmak için gerçek Http istemcisiyle etkileşimde bulunmanın bir yolu var mı?

+0

üstbilgi ve çalışmak için aşağıda en çok oy alan çözüm bulundu. –

cevap

17

Bunu, ayrı bir dosyada bir kısmi sınıftaki proxy sınıfının GetWebRequest yöntemini geçersiz kılarak yapabilirsiniz. temel sınıf yöntemi çağrıldıktan sonra, değiştirmek mümkün olmalıdır döndürülen HttpWebRequest sizin gibi ancak daha sonra yönteminden geri: bizim BT Kabul arıyordu Apache mod_security uygulandığında bu sorun üzerinde geldi

public partial class MyServiceProxy { 
    protected override WebRequest GetWebRequest(Uri uri) { 
     HttpWebRequest request = (HttpWebRequest) base.GetWebRequest(uri); 
     // do what you will with request. 
     return request; 
    } 
} 
+1

Yup bu hile yapar. Temel olarak kod aracılığıyla proxy'leri üretiyorum ve sınıfı ekleyebildim ve ek başlık eklemek için GetWebRequest'te kontrol edilen ve kullanılan bir Headers özelliği ekleyerek başlıkları eklemek için bazı kodları enjekte edebildim. Çirkin, ama harika çalışıyor! –

+0

çözüm için teşekkürler. Bu süreci web servis müşteri projemle nasıl kullanabilirim? – Jack

+0

@Jack: Bu, web hizmeti istemci projesidir. Ayrıca, seçiminiz varsa WCF'yi kullanmanız daha iyi olur. –

İlgili konular