天道酬勤,学无止境

Downloading image from URL with spaces in the path in Android

I want to download image from the path. This is my code:

String urlString = "http://www.hospimedica.com/images/stories/articles/article_images/_CC/20110328 - DJB146.gif";
url = new URL(urlString.replaceAll(" ", "%20"));
bm = BitmapFactory.decodeStream(url.openConnection().getInputStream());

But it returns me null in bm. Any ideas how to make this code to work?

标签

评论

Try UrlEncoder.

String urlString = URLEncoder.encode("http://www.hospimedica.com/images/stories/articles/article_images/_CC/20110328 - DJB146.gif");
url = new URL(urlString);
bm = BitmapFactory.decodeStream(url.openConnection().getInputStream());

The spaces are not the problem ... I tried it with your url and it's working

try {
    String urlString = "http://www.hospimedica.com/images/stories/articles/article_images/_CC/20110328 - DJB146.gif";
    URL url = new URL(urlString.replaceAll(" ", "%20"));

    URLConnection connection = url.openConnection();
    connection.setRequestProperty("User-agent", "Mozilla/4.0");
    connection.connect();

    InputStream input = connection.getInputStream();

    Log.d("#####", "result: " + BitmapFactory.decodeStream(input));
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

The important line is connection.setRequestProperty("User-agent", "Mozilla/4.0");
I don't know why that solves it, but it has obviously worked before here.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何在不下载Android Studio的情况下下载Android SDK?(How do I download the Android SDK without downloading Android Studio?)
    问题 目前,我运行的是 Windows 8.1 PC,它没有用于 Android Studio 或 Eclipse 等 IDE 的存储或 RAM。 我想下载没有 IDE 的 Android SDK 工具。 如何做到这一点? 回答1 您可以在下载页面的“仅限命令行工具”部分下找到命令行工具。 这些是截至目前页面中提供的链接(版本 26.1.1): Windows 无安装程序:https://dl.google.com/android/repository/sdk-tools-windows-4333796.zip MacOSX:https://dl.google.com/android/repository/sdk-tools-darwin-4333796.zip Linux:https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip 在下载任何命令行工具之前,请务必阅读并同意服务条款。 Windows 的安装程序版本似乎不再可用,这是 24.4.1 版的链接: Windows 安装程序:https://dl.google.com/android/installer_r24.4.1-windows.exe 回答2 导航到 android 下载页面的“仅获取命令行工具”部分,然后下载适用于您系统的工具。 对于
  • Android - 从网络下载图像,保存到应用程序私有位置的内存中,显示列表项(Android - downloading image from web, saving to internal memory in location private to app, displaying for list item)
    问题 我想要做的是:我希望我的应用程序从 Internet 下载图像并将其保存到手机内存中应用程序专用的位置。 如果列表项没有可用的图像(即无法在 Internet 上找到),我希望显示默认占位符图像。 这是我在 list_item_row.xml 文件中定义的默认图像。 在我的 ListActivity 文件中,我正在调用我编写的 CustomCursorAdapter 类的一个实例。 在 CustomCursorAdapter 中,我遍历所有列表项并定义需要映射到视图的内容,包括通过尝试从内部存储器读取图像文件。 我已经看到了关于这个主题的几个问题,但这些示例要么特定于外部手机内存(例如 SDCard),涉及保存字符串而不是图像,要么涉及使用 Bitmap.CompressFormat 来降低文件的分辨率(这在我的情况,因为这些图像将是分辨率已经很小的小缩略图)。 尝试将每个示例中的代码拼凑起来很困难,因此我询问了我的具体示例。 目前,我相信我已经编写了有效的代码,但是我的列表项没有显示任何图像,包括默认的占位符图像。 我不知道问题是由无效的下载/保存代码还是无效的读取代码引起的 - 我不知道如何检查内部存储器以查看图像是否存在也无济于事。 无论如何,这是我的代码。 任何帮助将不胜感激。 ProductUtils.java public static String
  • Android 10适配要点,作用域存储
    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。 距离Android 10系统正式发布已经过去大半年左右的时间了,你的应用程序已经对它进行适配了吗? 在Android 10众多的行为变更当中,有一点是非常值得引起我们重视的,那就是作用域存储。这个新功能直接颠覆了长久以来我们一直惯用的外置存储空间的使用方式,因此大量App都将面临着较多代码模块的升级。 然而,对于作用域存储这个新功能,官方的资料并不多,很多人也没有搞明白它的用法。另外它也不属于《第一行代码》现有的知识架构体系,虽然我有想过在第3版中加入这部分内容的讲解,但几经思考之后还是决定以一讲单独文章的方式来讲解这部分内容,也算是作为《第一行代码 第3版》的内容扩展吧。 本篇文章对作用域存储进行了比较全面的解析,相信看完之后你将能够轻松地完成Android 10作用域存储的适配升级。 理解作用域存储 Android长久以来都支持外置存储空间这个功能,也就是我们常说的SD卡存储。这个功能使用得极其广泛,几乎所有的App都喜欢在SD卡的根目录下建立一个自己专属的目录,用来存放各类文件和数据。 那么这么做有什么好处吗?我想了一下,大概有两点吧。第一,存储在SD卡的文件不会计入到应用程序的占用空间当中,也就是说即使你在SD卡存放了1G的文件
  • HTML5 File API从服务器下载文件并将其保存在沙箱中(HTML5 File API downloading file from server and saving it in sandbox)
    问题 我正在尝试了解HTML5 API。 我正在设计Web应用程序,其中浏览器客户端需要从服务器下载多个文件。 用户将对下载的文件和应用程序执行某些操作,而不是将状态保存到硬盘上。 我了解浏览器只能将这些文件保存到其沙箱中,这很好,只要用户在第二次启动该应用程序时就可以检索这些文件。 我应该使用BlobBuilder还是FileSaver? 我在这里迷路了。 回答1 我将向您展示如何使用XMLHttpRequest Level 2下载文件并通过FileSystem API或FileSaver接口保存它们。 下载档案 要下载文件,您将使用XMLHttpRequest Level 2(又名XHR2),它支持跨域请求,上载进度事件以及上载/下载二进制数据。 在“ XMLHttpRequest2中的新技巧”一文中,有许多使用XHR2的示例。 要将文件下载为Blob,您所要做的就是将responseType指定为“ blob”。 您也可以使用“文本”,“数组缓冲区”或“文档”类型。 下面的函数将文件下载到url ,并将其发送到success回调: function downloadFile(url, success) { var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = "blob"
  • 在Android中从url下载图像的最佳方法(Best method to download image from url in Android)
    问题 我正在使用以下方法从url下载单个图像 public static Bitmap getBitmap(String url) { try { InputStream is = (InputStream) new URL(url).getContent(); Bitmap d = BitmapFactory.decodeStream(is); is.close(); return d; } catch (Exception e) { return null; } } 有时我遇到内存不足的异常。 我无法捕获内存不足的异常。 该应用程序将关闭。 如何预防呢? 有没有更好的下载图像的方法,该方法也更快? 回答1 尝试使用此: public Bitmap getBitmapFromURL(String src) { try { java.net.URL url = new java.net.URL(src); HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); Bitmap myBitmap =
  • Download multiple files with one progressbar java / Android
    I am downloading multiple files in an AsyncTask with the help of for() loop. Below code works fine but each file downloaded with its own and single progress bar, I want only one progress bar for all the downloaded files. // ProgressDialog for downloading images @Override protected Dialog onCreateDialog(int id) { switch (id) { case progress_bar_type: pDialog = new ProgressDialog(this); pDialog.setMessage("Downloading file. Please wait..."); pDialog.setTitle("In progress..."); pDialog.setIndeterminate(false); pDialog.setMax(100); pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pDialog
  • 下载图片并保存(Download images and save it)
    问题 我正在研究一个学校 android 项目。 我需要一个下载按钮来下载图片(当我们上课时)并在另一个活动中显示它之后(即使在离线模式下,退出后) 我试过毕加索,但我无法在离线模式下保存和使用它。 回答1 为了支持离线模式,您需要将图像保存在磁盘上,因为当您的缓存被清除时,图像也会被清除。 您可以轻松地使用 Glide 来解决这个问题,也可以存储在设备上并检索 您可以在此处了解有关 Glide 的更多信息 http://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en /** Download the image using Glide **/ Bitmap theBitmap = null; theBitmap = Glide. with(YourActivity.this). load("Url of your image"). asBitmap(). into(-1, -1). get(); saveToInternalStorage(theBitmap, getApplicationContext(), "your preferred image name"); /** Save it on your device **/ public String
  • 使用 zip 文件在 Android Studio 中安装 Android Emulator(Installing Android Emulator In Android Studio with zip files)
    问题 我无法在我的 android studio 安装中安装模拟器。 所以,我从工作室复制了这个链接并下载了 zip 文件。 现在我需要关于如何使用我下载的 zip 文件手动安装它的帮助。 https://dl.google.com/android/repository/sys-img/android/x86_64-25_r03.zip 回答1 我在从 android studio 下载模拟器(图像文件)时遇到问题。 因此,当您尝试在没有模拟器的情况下运行您的应用程序时。 它要求提供一个选项来创建一个新的模拟器,它将下载所需的文件。 它用于下载 60-70% 并给出错误。 所以我使用了下载对话框中的链接,并手动下载了zip文件。 现在需要解压缩该 zip 文件并将其粘贴到 sdk 文件夹中。 sdk/system-images/android-(api level)/(解压文件夹) 注意:这是我的第一个线程,因此您可能会提出一些改进建议 回答2 我认为 francis-bacon 解决方案是正确的(我不明白为什么你会像 faizann-gagan 写的那样将模拟器安装在系统映像文件夹中),但它是部分的:你可能已经注意到 SDK 的许多组件都有一个包。 .xml文件。 平台、文档、工具……如果没有这个文件,只要组件不存在,SDK 管理器就会将组件显示为缺失。 问题是
  • 将图像从URL下载到SD卡(Download Images From URL to SD Card)
    问题 我正在尝试创建一个非常简单的图像下载应用程序。 我要在其中将所有图像从该URL下载到sd卡: https://www.dropbox.com/sh/5be3kgehyg8uzh2/AAA-jYcy_21nLBwnZQ3TBFAea : https://www.dropbox.com/sh/5be3kgehyg8uzh2/AAA-jYcy_21nLBwnZQ3TBFAea 此代码可在imageview中加载图像: package com.example.imagedownloadsample; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.ImageView; import com.squareup.picasso.Picasso; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.image_download); final
  • 使用一个进度条下载多个文件 java / Android(Download multiple files with one progressbar java / Android)
    问题 我在 for() 循环的帮助下在 AsyncTask 中下载多个文件。 下面的代码工作正常,但下载的每个文件都有自己的单个进度条,我只希望所有下载的文件有一个进度条。 // ProgressDialog for downloading images @Override protected Dialog onCreateDialog(int id) { switch (id) { case progress_bar_type: pDialog = new ProgressDialog(this); pDialog.setMessage("Downloading file. Please wait..."); pDialog.setTitle("In progress..."); pDialog.setIndeterminate(false); pDialog.setMax(100); pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pDialog.setCancelable(true); pDialog.show(); return pDialog; default: return null; } } 下面是下载文件的 AsyncTask .. class DownloadFileFromURL
  • Android - downloading image from web, saving to internal memory in location private to app, displaying for list item
    What I'm trying to do is this: I want my application to download an image from the Internet and save it to the phone's internal memory in a location that is private to the application. If there is no image available for the list item (i.e. it can't be found on the Internet), I want a default placeholder image to display. This is the image that I have defined in my list_item_row.xml file as the default. In my ListActivity file, I am calling an instance of a CustomCursorAdapter class I have written. It is in CustomCursorAdapter where I am iterating through all the list items and defining what
  • 从 JSON url 下载图像不起作用。 [关闭](Download image from JSON url is not working. [closed])
    问题 关闭。 这个问题需要细节或清晰度。 它目前不接受答案。 想改善这个问题吗? 通过编辑此帖子添加详细信息并澄清问题。 4年前关闭。 改进这个问题 当我插入 sdcard 它的工作。 我怎样才能将它保存到我的内部存储中? 我从 Url 下载了图像,并希望在插入 SD 卡时将其显示到我的手机上,显示 OK。 但我的三星 Galaxy S6 edge plus 没有 Sdcard,所以无法下载图像。如何将图像保存到内部存储而不是外部存储中。 package com.example.makdia.tuntuninews; import java.io.BufferedInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.drawable
  • 在android中的图像适配器中本地保存图像(Save Images locally in Image adapter in android)
    问题 这是一个关于在an​​droid应用程序中保存图像的问题。 我正在尝试制作一个 udacity 项目的流行电影应用程序。链接 - https://docs.google.com/document/d/1gtXUu1nzLGWrGfVCD6tEA0YHoYA9UNyT2yByqjJemp8/pub?embedded=true 我在 ImageAdapter 中有用于图像下载的毕加索库 - 这是我的 ImageAdapter 代码 - package jindal5.mayank.popular_movies_14ce10032_gsc; public class ImageAdapter extends BaseAdapter { private String drawablePrefix; private Context mContext; private ArrayList<String> mThumbUris; private ArrayList<String> mov_id_arr; private ArrayList<String> mov_tit_arr; public ImageAdapter(Context c) { mContext = c; String packName=mContext.getPackageName(); drawablePrefix=
  • 从 firebase 存储下载图像失败:android(Downloading an Image from firebase storage fails: android)
    问题 下载图像并将其存储在 SD 卡上不起作用。 我不知道我哪里出错了。 此代码用于将图像上传到 Firebase 存储。 // Get a reference to store file at photos/<FILENAME> StorageReference photoRef = mPhotosStorageReference.child(selectedImageUri.getLastPathSegment()); //Upload file to Firebase Storage photoRef.putFile(selectedImageUri).addOnSuccessListener(this, new OnSuccessListener < UploadTask.TaskSnapshot > () { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { Log.d("TAG", "in Success method of Uploading file"); // When the image has successfully uploaded, we get its download URL @SuppressWarnings("VisibleForTests") Uri
  • 如何在Android上显示URL中的图像(How to display image from URL on Android)
    问题 我想在屏幕上显示图像。 图片应来自URL,且不可绘制。 代码在这里: <ImageView android:id="@+id/ImageView01" android:src = "http://l.yimg.com/a/i/us/we/52/21.gif" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView> 但是它在编译时给出了错误。 如何在Android中显示来自URL的图像? 回答1 您可以直接从网上显示图片,而无需下载。 请检查以下功能。 它将把来自网络的图像显示到您的图像视图中。 public static Drawable LoadImageFromWebOperations(String url) { try { InputStream is = (InputStream) new URL(url).getContent(); Drawable d = Drawable.createFromStream(is, "src name"); return d; } catch (Exception e) { return null; } } 然后在您的活动中使用代码将图片设置为imageview。 回答2 我尝试了这段代码为我工作
  • Bootstrap3 - Glyphicons 不显示在 Chrome 中,只显示(Bootstrap3 - Glyphicons are not displayed in Chrome, only)
    问题 奇怪的是,在 Chrome v31 中没有显示 Bootstrap3 字形(显示一个小方块)。 但是,在 FF v26、Opera v18、Safari v5.1 和 IE v10 中运行良好。 此外,在 Android 4.x - Chrome 和 FF 中运行良好。 用简单的代码测试: <span class="glyphicon glyphicon-adjust"></span> 请帮忙。 非常感谢! 环境:Windows 8.0 回答1 与其解决你的问题,我更愿意教你如何解决你自己的问题。 右键单击元素并选择“检查元素”。 这将打开一个窗口,向您显示有关 html 和应用于它的 CSS 的一些有用信息。 如果是精灵图像(如 Bootstrap 2),请查看右侧的 CSS,寻找最顶部(未划掉)的background-image 。 请参阅精灵图像的 url。 如果它是一个字形(如在 Bootstrap 3 中),则查找font-family 。 转到网络选项卡。 您可能需要刷新页面以获取有用的内容。 查找它加载该精灵图像或字体的位置(例如 glyphicons-halflings-regular.woff)。 如果它说它的状态为“304”,则意味着它是从缓存中加载的。 在这种情况下,清除缓存并重新加载页面可能会解决您的问题。 如果它不是“304”状态
  • 下载 PDF 并显示它 (FileUriExposedException)(Downloading a PDF and displaying it (FileUriExposedException))
    问题 作为前言,我熟悉编码(高中 2 年),但对于 Android Studio(和 Java,一般而言)我完全是新手。 我一直在为我的问题寻找解决方案,但由于我缺乏经验,我不知道如何为我的项目实施解决方案。 简而言之,我需要从某个外部 URL 下载 pdf,将其存储到外部存储中,并使用某个 pdf-viewer 应用程序显示它。 我一直收到错误: ... android.os.FileUriExposedException:file:///storage/emulated/0/pdf/Read.pdf 通过 Intent.getData() 暴露在应用程序之外 ... 我一直在使用这个源来打开一个 pdf-viewer 和这个“文件提供者”上的源作为参考。 以下是我到目前为止所拥有的: Fire(带有一个可点击的TextView ,应该下载并显示 pdf) public class Fire extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fire); final TextView testButton =
  • Download image from JSON url is not working. [closed]
    Closed. This question needs details or clarity. It is not currently accepting answers. Want to improve this question? Add details and clarify the problem by editing this post. Closed 4 years ago. Improve this question When i insert sdcard its working. How can i save it to my internal storage? i downloaded image from Url and want to show it to my phone when sd card inserted it showing Ok. but my Samsung galaxy S6 edge plus have no Sdcard so image cant be downloaded.how can i save the image into internal storage instead of external storage. package com.example.makdia.tuntuninews; import java.io
  • 从 url 下载的圆形图像视图(Circular imageview with downloading from url)
    问题 我正在使用离子库从 url 下载图像。它的工作方式如下: holder.imageView=(ImageView)convertView.findViewById(R.id.image); Ion.with(holder.imageView).load(image_url); 我的图像imageView xml: <ImageView android:id="@+id/image" android:layout_width="64dp" android:layout_height="64dp" android:src="@drawable/defaultprofile"/> 我想将此图像视图用作圆形图像视图。 我发现了这个问题:How to Make an ImageView in Circular Shape? 但在那个问题中,他们使用的是静态图像。我的意思是他们不从 url 下载。如何使用圆形图像从 url 下载或者什么是最适合我的库? 回答1 使用毕加索。 它是最好的(对我来说)图像下载库,它也处理缓存。 https://github.com/square/picasso 您还可以在加载图像时设置占位符,您可以做的远不止这些。 对于圆形 ImageView,您可以使用此库:https://github.com/hdodenhof/CircleImageView 或
  • 如何使用Retrofit库在Android中下载文件?(How to download file in Android using Retrofit library?)
    问题 我需要使用我的应用程序中的Retrofit库下载所有类型的文件(二进制,图像,文本等)。 网上的所有示例都使用HTML GET方法。 我需要使用POST来防止自动缓存。 我的问题是如何在翻新中使用POST方法下载文件? 回答1 使用@Streaming 异步 编辑1 //On your api interface @POST("path/to/your/resource") @Streaming void apiRequest(Callback<POJO> callback); restAdapter.apiRequest(new Callback<POJO>() { @Override public void success(POJO pojo, Response response) { try { //you can now get your file in the InputStream InputStream is = response.getBody().in(); } catch (IOException e) { e.printStackTrace(); } } @Override public void failure(RetrofitError error) { } }); 同步 //On your api interface @POST("path/to