站在巨人肩膀上成长,废话不多少,首先感谢
http://article.fynas.com/universal-imageloader%E5%8A%A0%E8%BD%BD%E7%94%A8%E6%88%B7%E7%A7%81%E6%9C%89%E5%9B%BE%E7%89%87
作者的思路。
最开始配置并没有成功,因为对Cookie的属性并不是很了解。在cookie的String拼接上出了问题。
已订正;希望给遇到的童鞋一些帮助!
public class AuthImageDownloader extends BaseImageDownloader {
private static final int MAX_REDIRECT_COUNT = 5;
public AuthImageDownloader(Context context) {
super(context);
}
public AuthImageDownloader(Context context, int connectTimeout,
int readTimeout) {
super(context, connectTimeout, readTimeout);
}
protected InputStream getStreamFromNetwork(String imageUri, Object extra)
throws IOException {
HttpURLConnection conn = connectTo(imageUri);
int redirectCount = 0;
while (conn.getResponseCode() / 100 == 3
&& redirectCount < MAX_REDIRECT_COUNT) {
conn = connectTo(conn.getHeaderField("Location"));
redirectCount++;
}
return new BufferedInputStream(conn.getInputStream(), BUFFER_SIZE);
}
/**
* 获取带有用户验证信息的HttpURLConnection
*
* @param url
* @return
* @throws IOException
*/
private HttpURLConnection connectTo(String url) throws IOException {
String encodedUrl = Uri.encode(url, ALLOWED_URI_CHARS);
HttpURLConnection conn = (HttpURLConnection) new URL(encodedUrl)
.openConnection();
//这句话为urlconnection加入身份验证信息
String sId = "";
List
StarfishApplication.getInstance()).getCookies();
for (Cookie cookie : cookies) {
if (cookie.getName().equals("session_id")) {
sId = cookie.getValue();
}
}
conn.setRequestProperty("Cookie",
"session_id=" + sId);
conn.setConnectTimeout(connectTimeout);
conn.setReadTimeout(readTimeout);
conn.connect();
return conn;
}
}
不过我们项目测试虽然可以用,但是还是有bug。