【问题标题】:Difference between URLConnection getInputStream() & HttpEntity getContent()URLConnection getInputStream() 和 HttpEntity getContent() 的区别
【发布时间】:2011-08-22 02:44:21
【问题描述】:

我尝试从特定的url下载图片,首先我使用这种方式获取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。

所以我想知道这两种方法有什么不同? 谢谢~

【问题讨论】:

    标签: android inputstream


    【解决方案1】:

    looks like服务器返回图片内容,同时也返回404响应码,表示执行请求时出错。

    1.6 Sun/Oracle JDK 上,当 HttpURLConnection 注意到这样的返回代码并且不尝试返回内容时,它似乎失败并出现 IOException。我的猜测是 Android 平台具有相同的行为,并且您使用的 Apache HttpClient 库对服务器错误配置更加稳健。

    【讨论】:

      猜你喜欢
      • 2016-03-23
      • 2012-04-20
      • 2018-01-13
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 2014-04-12
      • 2011-06-18
      相关资源
      最近更新 更多