2009-01-26 26 views
26

'un başlığı nasıl değiştirilir? Java Html Belgesini biraz geliştirmeye çalışıyorum ama HttpUrlConntion ile ilgili sorunlara yol açıyorum. Bir şey, bazı sunucuların kullanıcı aracısı bir Java VM ise bir isteği engellemesidir. Başka bir sorun, HttpUrlConnection'un Referrer veya Location başlık alanını ayarlamamasıdır. Birkaç site, içeriğin kendi sitelerinden erişildiğini doğrulamak için bu alanları kullandığından, burada da engellenmişim. Tek çözünürlüğü görebildiğim kadarıyla, HTTP protokolünün URL işleyicisini değiştirmek. Veya varsayılan HTTP İşleyicisi'ni değiştirmek için herhangi bir yolu var mı?HttpUrlConnection

cevap

42

URL'u URL.openConnection ile açın. İsteğe bağlı olarak HttpURLConnection'a dökün. URLConnection.setRequestProperty/addRequestProperty numaralı telefonu arayın.

Varsayılan User-Agent başlık değeri, "http.agent" sistem özelliğinden ayarlanır. PlugIn ve WebStart bu özelliği ayarlamanıza izin verir.

+10

Uygun olduğunda addRequestProperty ve setRequestProperty arasında ayrım yaptığınızdan emin olun. Set varyantı, aynı anahtarla mevcut herhangi bir üstbilginin üzerine yazar. Ekleme varyantı ve varsa, başlığın ek örneği eklenir. – laz

+0

'addRequestProperty' yeni bir satır ekliyor mu (başka bir deyişle, isteklerin ** aynı ** anahtarla 2 satırı olacak) yoksa virgül ve varolan satırın yeni değerini mi eklediniz? – Pacerier

+0

@leoger Yardım için teşekkürler = D – Pacerier

2

Programatik HTTP bağlantınızı yönetmek için Apache HttpClient'u kullanırsanız, bağlantı oluşturma (ve başarısız olduğunda isteğe bağlı otomatik yeniden bağlanma), Üstbilgiler, iletilerle karşılaşmalar, döndürülen içeriği almak için kullanışlı yöntemler içeren son derece kullanışlı bir API alırsınız. çok çok fazla.

+11

Bu gönderinin eski olduğunu biliyorum, ancak kimse bunu okursa: HttpURLConnection artık HttpClient üzerinden tercih ediliyor, [bu blog yayını] konusuna bakın (http://android-developers.blogspot.com/2011/09/androids-http-clients. bilgi için html). – kamituel

0

Sorunumu çözdüm. Başlığı sadece uygulama/json'a gönderebilir ve gövdeyi bir json nesnesi olarak geçirebiliriz. Bu sadece sorunu çözüyor.

İlgili konular