我尝试从特定网址下载图片,首先我用这种方式获取InputStream:
if (url != null) {
URLConnection ucon = null;
try {
ucon = url.openConnection();
} catch (IOException e2) {
e2.printStackTrace();
}
if (ucon != null) {
ucon.setConnectTimeout(CONN_TIMEOUT);
ucon.setReadTimeout(READ_TIMEOUT);
try {
is = ucon.getInputStream();
效果很好,但是当我尝试从http://111.12.12.232/images/face/bigface/339.gif下载图片时 我无法获得InputStream,但尝试使用:
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
HttpProtocolParams.setUseExpectContinue(params, false);
HttpConnectionParams.setConnectionTimeout(params, CONN_TIMEOUT);
HttpConnectionParams.setSoTimeout(params, READ_TIMEOUT);
HttpGet getRequest;
try {
getRequest = new HttpGet(url.toURI());
HttpClient client = new DefaultHttpClient(params);
HttpResponse response = client.execute(getRequest);
HttpEntity entity = response.getEntity();
is = entity.getContent();
这种方式可以成功获取InputStream,并可以下载gif。
所以我想知道这两种方法有什么不同? 感谢〜
答案 0 :(得分:1)
服务器looks like返回图像内容,但也返回404响应代码,表示满足请求的错误。
在1.6 Sun/Oracle JDK上,当HttpURLConnection注意到这样的返回代码并且不会尝试返回内容时,它似乎因IOException而失败。我的猜测是Android平台具有相同的行为,您使用的Apache HttpClient库对于服务器错误配置来说更加健壮。