【问题标题】:Unable to download image if URL dont have www in android如果 URL 在 android 中没有 www,则无法下载图像
【发布时间】:2013-06-14 09:48:45
【问题描述】:

我正在尝试从 URL 下载图像。我面临的问题是,如果 URL 没有 www,那么我会收到错误,但如果我添加 www,它就可以正常工作。我从 Web 服务获取这些 URL,有的可能有 www,有的没有,我正在寻找解决这个问题的解决方案。

如果 URL 是这样的,那么没问题: http://www.grindzmyreels.com/wp-content/uploads/2013/02/minion.jpg

但在这种情况下我得到错误: http://grindzmyreels.com/wp-content/uploads/2013/02/minion.jpg

代码如下:

public void DownloadImage()
       {      

           HttpClient client = new DefaultHttpClient();
           HttpResponse httpResponse;
           Bitmap bmp = null;

           try{   

               httpResponse = client.execute(new HttpGet("http://www.grindzmyreels.com/wp-content/uploads/2013/02/minion.jpg"));
              //int responseCode = httpResponse.getStatusLine().getStatusCode();
              HttpEntity entity = httpResponse.getEntity();

              if (entity != null)
              {
                  InputStream in = entity.getContent();
                  bmp = BitmapFactory.decodeStream(in);

                  in.close();

                  String Path = bmp.toString();
                  Context context = getApplicationContext();                       
                  File mydir = context.getDir("MyFolder", Context.MODE_PRIVATE); //Creating an internal dir;
                  File fileWithinMyDir = new File(mydir, Path ); //Getting a file within the dir.

                  FileOutputStream out = new FileOutputStream(fileWithinMyDir);                   
                  out.close();


                   extStorageDirectory = Environment.getExternalStorageDirectory().toString();
                   OutputStream outStream = null;
                   File file = new File(extStorageDirectory, Name+".PNG");                    
                   outStream = new FileOutputStream(file);
                   bmp.compress(Bitmap.CompressFormat.PNG, 100, outStream);

                   filePath = file.toString();
                   outStream.flush();
                   outStream.close();  

              }                   
           } 
           catch (ClientProtocolException e)  
           {
               client.getConnectionManager().shutdown();
               e.printStackTrace();
           } 
           catch (IOException e) 
           {
               client.getConnectionManager().shutdown();
               e.printStackTrace();
           }   

       }

非常感谢。

【问题讨论】:

    标签: android url download


    【解决方案1】:

    检查 URL 以查看它是否包含 www。 如果没有,那么您可以将其添加到字符串中。将http:// 替换为http://www. 将是一种简单的方法。

    这是一个例子

    String URL = "http://grindzmyreels.com/wp-content/uploads/2013/02/minion.jpg";
    
    //if URL doesnt contain www. then add it after the http://
    if(!URL.contains("www.")) URL.replace("http://", "http://www.");
    

    【讨论】:

    • 不工作的原因是什么?你得到什么错误信息?什么是不起作用的确切链接,我会找到一个适用的解决方案?还是你用我已经用过的这个网址试试?
    • 如果我的网址中有空格,我必须添加什么字符?
    • 一个空格是%20 或者你可以使用String URL = Uri.parse("http://..") 这应该为你做这一切
    【解决方案2】:

    如果您从 web 服务获取 URL,则使用检查 URL 是否包含 www。如果没有,则添加它。

    【讨论】:

    • 这甚至可能不是 Android 问题。有些站点可以在 www.some-site.com 和 some-site.com 上找到——这完全取决于另一端的 Web 服务器的配置方式。如果您要尝试决定是否应该添加“www”,请不要忘记子域。
    • @Phil 不是我的情况。我的网络服务器可以同时使用两者,但由于某种原因,我在 Android 方面遇到了这个问题。
    • @AliAbid 也许当您点击非 www 网址时,您的网络服务器会发回重定向(网址是否会在浏览器中重写?);并非所有的网络服务器都会这样做,重要的是要知道您的代码是否可以用于除您自己之外的其他网络服务器。
    猜你喜欢
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多