2010-09-24 12 views
12

'u kullanarak yanıt üstbilgisi konumunu alamıyor, birileri burada yanlış yaptığımı önerebilir mi?
Java burada kullanarak belirli bir URL için başlık yerini almaya çalışıyorum benim kodudur: Kesin olarak bildiğim beri, Java'nın URLConnection

URLConnection conn = url.openConnection(); 
String location = conn.getHeaderField("Location"); 

bu garip i Yer başlığını dönmek atıfta ve kullanıyorum URL getContentType() veya getContentLength() gibi yöntemler mükemmel çalışıyor

tavsiyeniz kadar her zaman olduğu gibi takdir :)

Teşekkür

Belki
+0

Ve soru için +1: –

cevap

14

Location başlığı, yönlendirme yanıtının bir parçası olarak döndürülür. Eğer öyleyse, URLConnection kolları sivri kaynağa ikinci isteği yayınlayarak otomatik yönlendirme, bu yüzden onu devre dışı gerekir:

((HttpURLConnection) conn).setInstanceFollowRedirects(false); 

DÜZENLEME: aslında yönlendirme hedefine bir URL'ye ihtiyacınız ve yoksa Yönlendirme işlemlerini devre dışı bırakmak istiyorsanız, bunun yerine (bağlantı kurulduktan sonra) getURL()'u arayabilirsiniz.

String location = "http://www.example.com/download.php?getFile=1"; 
HttpURLConnection connection = null; 
for (;;) { 
    URL url = new URL(location); 
    connection = (HttpURLConnection) url.openConnection(); 
    connection.setInstanceFollowRedirects(false); 
    String redirectLocation = connection.getHeaderField("Location"); 
    if (redirectLocation == null) break; 
    location = redirectLocation; 
} 
+1

bir çekicilik gibi :) –

+0

Harika! Benim küçük bilgi tabanına değerli bir katkı. +1 –

+0

düzenlemenizi tekrar yapın: bu daha da zarif! teşekkürler –

0

Sadece bir url birden yönlendirmeleri varsa, doğrudan bir bağlantı elde etmek için böyle bir şey yapabileceğini ... axtavt's cevaba takip.
İlgili konular