HTTP / 1.1 302暂时移动 – 在Android API 16-17上发生

长话短说。 我的应用程序启动时,我想从互联网上下载一些谷歌表文件。 这是情况:

较新的设备:一切工作100%,没有问题,所有文件下载。

旧设备(API 16-17):正确下载第一个工作表文件。 无法下载第二个文件。 我收到HTTP / 1.1 302 Moved Temporarily问题,文件无法正确下载。

我为这两个文件调用了AsynchTask。 AsynchTask运行完美,我尝试了其他方法来查看AsynchTask是否存在问题。 此外,所有链接都非常精细且有效。

这是我的AsynchTask类代码的一部分:

下载文件的方法:

private String downloadUrl(String urlString) throws IOException { InputStream is = null; try { URL url = new URL(urlString); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setInstanceFollowRedirects(true); //you still need to handle redirect manully. HttpsURLConnection.setFollowRedirects(true); conn.setReadTimeout(10000 /* milliseconds */); conn.setConnectTimeout(15000 /* milliseconds */); conn.setInstanceFollowRedirects(true); conn.setRequestMethod("GET"); conn.setDoInput(true); // Starts the query conn.connect(); int responseCode = conn.getResponseCode(); is = conn.getInputStream(); String contentAsString = convertStreamToString(is); Log.d("contentAsString",contentAsString); return contentAsString; } finally { if (is != null) { is.close(); } } } 

字符串结果(HTTP / 1.1 302 Moved Temporarily消息)

  HTTP/1.1 302 Moved Temporarily Content-Type: text/html; charset=UTF-8 Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Mon, 01 Jan 1990 00:00:00 GMT Date: Tue, 18 Oct 2016 09:26:14 GMT Location: https://docs.google.com/spreadsheets/d/1hRiDvdLPkQEdTSVxmWEoWXjmCFQodNjMNYi3Fd7yYn0/gviz/tq P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." Content-Encoding: gzip X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Server: GSE Set-Cookie: NID=89=afVN4Sa74ZsYuffxNSiXn2wWTJkSUULbtZperbpr8T9hPzHoFzx-uGu_lJUVCkYSd1eZUPUFucffCDHc7lPConnfPpTMbqAOgIcIQoJG6TQFUHzBUNW6bFqUy__ZthsR;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Set-Cookie: NID=89=k5r33ZLA4l__4v1CE1iGrtQbtqoJxOyVxwrSMbsKWviK74u-vM32WdKtt-txFEOhPWo1g9f1CWMXcu6Fuczo4ZCck47D23tIZZRcqpRxkSB0z5w2xI9oj1Jcq8duISiU;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32" Transfer-Encoding: chunked 00000001 00000001   00000001 00000001    00000001    00000001    00000001    00000001    00000001    00000001    00000001 m 00dc   N 0 D    ܳ 8 !7R 8)ih hs  U R !6  q G    HoY! 2 X     ,J TfFI  L 4   ~     Z ~  eݬ ]D    E   . k n$i  /   r,%E  U΍  gl ӟ1> v   V!:    Y / ;.  ۗ s ?  &  =U v   õ ,   op4Q8! 4 =  %  O    ڛ      0   HTTP/1.1 302 Moved Temporarily Content-Type: text/html; charset=UTF-8 Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Mon, 01 Jan 1990 00:00:00 GMT Date: Tue, 18 Oct 2016 09:26:14 GMT Location: https://docs.google.com/spreadsheets/d/1hRiDvdLPkQEdTSVxmWEoWXjmCFQodNjMNYi3Fd7yYn0/gviz/tq P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." Content-Encoding: gzip X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Server: GSE Set-Cookie: NID=89=afVN4Sa74ZsYuffxNSiXn2wWTJkSUULbtZperbpr8T9hPzHoFzx-uGu_lJUVCkYSd1eZUPUFucffCDHc7lPConnfPpTMbqAOgIcIQoJG6TQFUHzBUNW6bFqUy__ZthsR;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Set-Cookie: NID=89=k5r33ZLA4l__4v1CE1iGrtQbtqoJxOyVxwrSMbsKWviK74u-vM32WdKtt-txFEOhPWo1g9f1CWMXcu6Fuczo4ZCck47D23tIZZRcqpRxkSB0z5w2xI9oj1Jcq8duISiU;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32" Transfer-Encoding: chunked 00000001 00000001   00000001 00000001    00000001    00000001    00000001    00000001    00000001    00000001    00000001 m 00dc   N 0 D    ܳ 8 !7R 8)ih hs  U R !6  q G    HoY! 2 X     ,J TfFI  L 4   ~     Z ~  eݬ ]D    E   . k n$i  /   r,%E  U΍  gl ӟ1> v   V!:    Y / ;.  ۗ s ?  &  =U v   õ ,   op4Q8! 4 =  %  O    ڛ      0   HTTP/1.1 302 Moved Temporarily Content-Type: text/html; charset=UTF-8 Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Mon, 01 Jan 1990 00:00:00 GMT Date: Tue, 18 Oct 2016 09:26:14 GMT Location: https://docs.google.com/spreadsheets/d/1hRiDvdLPkQEdTSVxmWEoWXjmCFQodNjMNYi3Fd7yYn0/gviz/tq P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." Content-Encoding: gzip X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Server: GSE Set-Cookie: NID=89=afVN4Sa74ZsYuffxNSiXn2wWTJkSUULbtZperbpr8T9hPzHoFzx-uGu_lJUVCkYSd1eZUPUFucffCDHc7lPConnfPpTMbqAOgIcIQoJG6TQFUHzBUNW6bFqUy__ZthsR;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Set-Cookie: NID=89=k5r33ZLA4l__4v1CE1iGrtQbtqoJxOyVxwrSMbsKWviK74u-vM32WdKtt-txFEOhPWo1g9f1CWMXcu6Fuczo4ZCck47D23tIZZRcqpRxkSB0z5w2xI9oj1Jcq8duISiU;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32" Transfer-Encoding: chunked 00000001 00000001   00000001 00000001    00000001    00000001    00000001    00000001    00000001    00000001    00000001 m 00dc   N 0 D    ܳ 8 !7R 8)ih hs  U R !6  q G    HoY! 2 X     ,J TfFI  L 4   ~     Z ~  eݬ ]D    E   . k n$i  /   r,%E  U΍  gl ӟ1> v   V!:    Y / ;.  ۗ s ?  &  =U v   õ ,   op4Q8! 4 =  %  O    ڛ      0   HTTP/1.1 302 Moved Temporarily Content-Type: text/html; charset=UTF-8 Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Mon, 01 Jan 1990 00:00:00 GMT Date: Tue, 18 Oct 2016 09:26:14 GMT Location: https://docs.google.com/spreadsheets/d/1hRiDvdLPkQEdTSVxmWEoWXjmCFQodNjMNYi3Fd7yYn0/gviz/tq P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." Content-Encoding: gzip X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Server: GSE Set-Cookie: NID=89=afVN4Sa74ZsYuffxNSiXn2wWTJkSUULbtZperbpr8T9hPzHoFzx-uGu_lJUVCkYSd1eZUPUFucffCDHc7lPConnfPpTMbqAOgIcIQoJG6TQFUHzBUNW6bFqUy__ZthsR;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Set-Cookie: NID=89=k5r33ZLA4l__4v1CE1iGrtQbtqoJxOyVxwrSMbsKWviK74u-vM32WdKtt-txFEOhPWo1g9f1CWMXcu6Fuczo4ZCck47D23tIZZRcqpRxkSB0z5w2xI9oj1Jcq8duISiU;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32" Transfer-Encoding: chunked 00000001 00000001   00000001 00000001    00000001    00000001    00000001    00000001    00000001    00000001    00000001 m 00dc   N 0 D    ܳ 8 !7R 8)ih hs  U R !6  q G    HoY! 2 X     ,J TfFI  L 4   ~     Z ~  eݬ ]D    E   . k n$i  /   r,%E  U΍  gl ӟ1> v   V!:    Y / ;.  ۗ s ?  &  =U v   õ ,   op4Q8! 4 =  %  O    ڛ      0   HTTP/1.1 302 Moved Temporarily Content-Type: text/html; charset=UTF-8 Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Mon, 01 Jan 1990 00:00:00 GMT Date: Tue, 18 Oct 2016 09:26:14 GMT Location: https://docs.google.com/spreadsheets/d/1hRiDvdLPkQEdTSVxmWEoWXjmCFQodNjMNYi3Fd7yYn0/gviz/tq P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." Content-Encoding: gzip X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Server: GSE Set-Cookie: NID=89=afVN4Sa74ZsYuffxNSiXn2wWTJkSUULbtZperbpr8T9hPzHoFzx-uGu_lJUVCkYSd1eZUPUFucffCDHc7lPConnfPpTMbqAOgIcIQoJG6TQFUHzBUNW6bFqUy__ZthsR;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Set-Cookie: NID=89=k5r33ZLA4l__4v1CE1iGrtQbtqoJxOyVxwrSMbsKWviK74u-vM32WdKtt-txFEOhPWo1g9f1CWMXcu6Fuczo4ZCck47D23tIZZRcqpRxkSB0z5w2xI9oj1Jcq8duISiU;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32" Transfer-Encoding: chunked 00000001 00000001   00000001 00000001    00000001    00000001    00000001    00000001    00000001    00000001    00000001 m 00dc   N 0 D    ܳ 8 !7R 8)ih hs  U R !6  q G    HoY! 2 X     ,J TfFI  L 4   ~     Z ~  eݬ ]D    E   . k n$i  /   r,%E  U΍  gl ӟ1> v   V!:    Y / ;.  ۗ s ?  &  =U v   õ ,   op4Q8! 4 =  %  O    ڛ      0   HTTP/1.1 302 Moved Temporarily Content-Type: text/html; charset=UTF-8 Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Mon, 01 Jan 1990 00:00:00 GMT Date: Tue, 18 Oct 2016 09:26:14 GMT Location: https://docs.google.com/spreadsheets/d/1hRiDvdLPkQEdTSVxmWEoWXjmCFQodNjMNYi3Fd7yYn0/gviz/tq P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." Content-Encoding: gzip X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Server: GSE Set-Cookie: NID=89=afVN4Sa74ZsYuffxNSiXn2wWTJkSUULbtZperbpr8T9hPzHoFzx-uGu_lJUVCkYSd1eZUPUFucffCDHc7lPConnfPpTMbqAOgIcIQoJG6TQFUHzBUNW6bFqUy__ZthsR;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Set-Cookie: NID=89=k5r33ZLA4l__4v1CE1iGrtQbtqoJxOyVxwrSMbsKWviK74u-vM32WdKtt-txFEOhPWo1g9f1CWMXcu6Fuczo4ZCck47D23tIZZRcqpRxkSB0z5w2xI9oj1Jcq8duISiU;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32" Transfer-Encoding: chunked 00000001 00000001   00000001 00000001    00000001    00000001    00000001    00000001    00000001    00000001    00000001 m 00dc   N 0 D    ܳ 8 !7R 8)ih hs  U R !6  q G    HoY! 2 X     ,J TfFI  L 4   ~     Z ~  eݬ ]D    E   . k n$i  /   r,%E  U΍  gl ӟ1> v   V!:    Y / ;.  ۗ s ?  &  =U v   õ ,   op4Q8! 4 =  %  O    ڛ      0   HTTP/1.1 302 Moved Temporarily Content-Type: text/html; charset=UTF-8 Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Mon, 01 Jan 1990 00:00:00 GMT Date: Tue, 18 Oct 2016 09:26:14 GMT Location: https://docs.google.com/spreadsheets/d/1hRiDvdLPkQEdTSVxmWEoWXjmCFQodNjMNYi3Fd7yYn0/gviz/tq P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." Content-Encoding: gzip X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Server: GSE Set-Cookie: NID=89=afVN4Sa74ZsYuffxNSiXn2wWTJkSUULbtZperbpr8T9hPzHoFzx-uGu_lJUVCkYSd1eZUPUFucffCDHc7lPConnfPpTMbqAOgIcIQoJG6TQFUHzBUNW6bFqUy__ZthsR;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Set-Cookie: NID=89=k5r33ZLA4l__4v1CE1iGrtQbtqoJxOyVxwrSMbsKWviK74u-vM32WdKtt-txFEOhPWo1g9f1CWMXcu6Fuczo4ZCck47D23tIZZRcqpRxkSB0z5w2xI9oj1Jcq8duISiU;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32" Transfer-Encoding: chunked 00000001 00000001   00000001 00000001    00000001    00000001    00000001    00000001    00000001    00000001    00000001 m 00dc   N 0 D    ܳ 8 !7R 8)ih hs  U R !6  q G    HoY! 2 X     ,J TfFI  L 4   ~     Z ~  eݬ ]D    E   . k n$i  /   r,%E  U΍  gl ӟ1> v   V!:    Y / ;.  ۗ s ?  &  =U v   õ ,   op4Q8! 4 =  %  O    ڛ      0   HTTP/1.1 302 Moved Temporarily Content-Type: text/html; charset=UTF-8 Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Mon, 01 Jan 1990 00:00:00 GMT Date: Tue, 18 Oct 2016 09:26:14 GMT Location: https://docs.google.com/spreadsheets/d/1hRiDvdLPkQEdTSVxmWEoWXjmCFQodNjMNYi3Fd7yYn0/gviz/tq P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." Content-Encoding: gzip X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Server: GSE Set-Cookie: NID=89=afVN4Sa74ZsYuffxNSiXn2wWTJkSUULbtZperbpr8T9hPzHoFzx-uGu_lJUVCkYSd1eZUPUFucffCDHc7lPConnfPpTMbqAOgIcIQoJG6TQFUHzBUNW6bFqUy__ZthsR;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Set-Cookie: NID=89=k5r33ZLA4l__4v1CE1iGrtQbtqoJxOyVxwrSMbsKWviK74u-vM32WdKtt-txFEOhPWo1g9f1CWMXcu6Fuczo4ZCck47D23tIZZRcqpRxkSB0z5w2xI9oj1Jcq8duISiU;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32" Transfer-Encoding: chunked 00000001 00000001   00000001 00000001    00000001    00000001    00000001    00000001    00000001    00000001    00000001 m 00dc   N 0 D    ܳ 8 !7R 8)ih hs  U R !6  q G    HoY! 2 X     ,J TfFI  L 4   ~     Z ~  eݬ ]D    E   . k n$i  /   r,%E  U΍  gl ӟ1> v   V!:    Y / ;.  ۗ s ?  &  =U v   õ ,   op4Q8! 4 =  %  O    ڛ      0   HTTP/1.1 302 Moved Temporarily Content-Type: text/html; charset=UTF-8 Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Mon, 01 Jan 1990 00:00:00 GMT Date: Tue, 18 Oct 2016 09:26:14 GMT Location: https://docs.google.com/spreadsheets/d/1hRiDvdLPkQEdTSVxmWEoWXjmCFQodNjMNYi3Fd7yYn0/gviz/tq P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." Content-Encoding: gzip X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Server: GSE Set-Cookie: NID=89=afVN4Sa74ZsYuffxNSiXn2wWTJkSUULbtZperbpr8T9hPzHoFzx-uGu_lJUVCkYSd1eZUPUFucffCDHc7lPConnfPpTMbqAOgIcIQoJG6TQFUHzBUNW6bFqUy__ZthsR;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Set-Cookie: NID=89=k5r33ZLA4l__4v1CE1iGrtQbtqoJxOyVxwrSMbsKWviK74u-vM32WdKtt-txFEOhPWo1g9f1CWMXcu6Fuczo4ZCck47D23tIZZRcqpRxkSB0z5w2xI9oj1Jcq8duISiU;Domain=.google.com;Path=/;Expires=Wed, 19-Apr-2017 09:26:14 GMT;HttpOnly Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32" Transfer-Encoding: chunked 00000001 00000001   00000001 00000001    00000001    00000001    00000001    00000001    00000001    00000001    00000001 m 00dc   N 0 D    ܳ 8 !7R 8)ih hs  U R !6  q G    HoY! 2 X     ,J TfFI  L 4   ~     Z ~  eݬ ]D    E   . k n$i  /   r,%E  U΍  gl ӟ1> v   V!:    Y / ;.  ۗ s ?  &  =U v   õ ,   op4Q8! 4 =  %  O    ڛ      0 

在阅读了一下有关HTTP 302之后,我知道我必须以某种方式重定向。 问题是我不知道该怎么做。 此外,我不知道为什么这个问题只出现在较旧的Android版本上。

我现在已经挣扎了一个星期。 任何反馈意见! 谢谢!

遵循重定向的关键是按键location获取标题,并将其用作您的URL:

 Location: https://docs.google.com/spreadsheets/d/1hRiDvdLPkQEdTSVxmWEoWXjmCFQodNjMNYi3Fd7yYn0/gviz/tq 

它只是网络服务器的方式说“嘿,你的页面移到这里。转而去!”。

mkyong.com的这篇文章有一个很好的例子:

 package com.mkyong.http; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HttpRedirectExample { public static void main(String[] args) { try { String url = "http://www.twitter.com"; URL obj = new URL(url); HttpURLConnection conn = (HttpURLConnection) obj.openConnection(); conn.setReadTimeout(5000); conn.addRequestProperty("Accept-Language", "en-US,en;q=0.8"); conn.addRequestProperty("User-Agent", "Mozilla"); conn.addRequestProperty("Referer", "google.com"); System.out.println("Request URL ... " + url); boolean redirect = false; // normally, 3xx is redirect int status = conn.getResponseCode(); if (status != HttpURLConnection.HTTP_OK) { if (status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_MOVED_PERM || status == HttpURLConnection.HTTP_SEE_OTHER) redirect = true; } System.out.println("Response Code ... " + status); if (redirect) { // get redirect url from "location" header field String newUrl = conn.getHeaderField("Location"); // get the cookie if need, for login String cookies = conn.getHeaderField("Set-Cookie"); // open the new connnection again conn = (HttpURLConnection) new URL(newUrl).openConnection(); conn.setRequestProperty("Cookie", cookies); conn.addRequestProperty("Accept-Language", "en-US,en;q=0.8"); conn.addRequestProperty("User-Agent", "Mozilla"); conn.addRequestProperty("Referer", "google.com"); System.out.println("Redirect to URL : " + newUrl); } BufferedReader in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String inputLine; StringBuffer html = new StringBuffer(); while ((inputLine = in.readLine()) != null) { html.append(inputLine); } in.close(); System.out.println("URL Content... \n" + html.toString()); System.out.println("Done"); } catch (Exception e) { e.printStackTrace(); } } }