Bir URLConnection kullanıldığında, 301 yönlendirmesi çalışmaz, getHeaderFields() kullanarak Location
başlığını bile göstermez. Yeni Android hariç, boş bir liste (4.1 test ettim ve çalıştı). Bu, varsayılan tarayıcıda (here) bildirilen bir şey gibi görünüyor, ancak testimde Android tarayıcısında çalıştı. Eski Android'deki bu hata için bazı geçici çözüm var mı? 301/302 Yönlendirme Android'de çalışmıyor (farklı sürümlerde farklı çalışır)
URLConnection conn = u.openConnection();
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
(conn).setInstanceFollowRedirects(true);
ama hala yeni Android'de dışında, boş bir liste verir.
Güncelleştirme: İlgili bir sorun olabilir, bazen URLConnection bazı durumlarda bile istek göndermiyor gibi görünüyor. (Emülatörü ile bir bilgisayarda Wireshark ile kontrol ettim). Bu böceğin etrafında çalışmanın bir yolu var mı?
Güncelleme: Ben 3xx yönlendirme için test çalıştı, iyi çalıştı yönlendirmeleri, fakat normal bağlantılar Ian'ın Kurabiye Manager ile çalışmadı. doğrudan OpenConnection sonra setCookies çağrıldı emin olduktan sonra, bu büyük çalışır:
URL u = new URL(_url);
...
int tries = 4;
int code = 301;
URLConnection conn = null;
while (tries > 0 && code/100 == 3) {
conn = null;
conn = u.openConnection();
_CM.setCookies(conn);
((HttpURLConnection)conn).setInstanceFollowRedirects(false);//Required
code =((HttpURLConnection)conn).getResponseCode();
if (code/100 == 3) {
String loc = conn.getHeaderField("Location");
u = new URL(loc);
}
}
//conn.addRequestProperty("Accept-Encoding", "gzip");
conn.connect();
_CM.storeCookies(conn);
gerçekten garip bir şey FollowRedirect hattı ("Gerekli" yorumunu yaptı) yeni Android (4.1 emülatörü) vardır gerekli değildir. Eski Android'de (2.2), Connection Reset by Peer
hatasını veriyor. Bu muhtemelen benim yönlendirme deneysel kodun 4.1 değil, 2.2'de başarısız olmasının sebebiydi. İşlevlerdeki farklılıklar için herhangi bir sebep var mı? comments here'a göre yeniden yönlendirme https, JVM sürümüne bağlı olarak farklı davranışlara sahiptir, Android'in URLConnection/HTTPUrlConnection özelliği farklı sürümlerde de değişmiş olabilir mi?
(apache commons HttpClient dayanarak) HTTP isteği bazen sunucuya ulaşmıyor, yeniden yönlendirme gerçekleşmediğinde HTTP yanıt kodu 'conn.getResponseCode(); – yorkw
getResponseCode() yöntemi, URLConnection – NoBugs
türünün tanımlanışıdır. HttpURLConnection.getResponseCode(); 'http ile ilgili sorunla uğraşırken, daha fazla bir şey yapmadan önce her zaman gerçek yanıt kodunu alır ve denetlerim. – yorkw