无法使用Android从Google云端存储网址下载图片

时间:2015-01-12 15:25:55

标签: java android google-cloud-storage httpurlconnection apache-httpclient-4.x

从我的Android应用中从Google云端存储公共网址下载图像时遇到问题。我的代码适用于其他来源的图像。您也可以从网络浏览器访问Google云端存储中的图像而不会出现任何问题。以此图片为例:http://tin_images.storage.googleapis.com/1420678062-zmj1qJQe126843HbyJvbUI.jpg

这是一个演示问题的意图服务:

public class TestService1 extends IntentService {

public TestService1(){
    super("TestService1");
}

@Override
protected void onHandleIntent(Intent intent) {
    String urlString="http://tin_images.storage.googleapis.com/1420678062-zmj1qJQe126843HbyJvbUI.jpg";
    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(urlString);
        HttpResponse response = httpclient.execute(httpget);
    }
    catch(IOException e){
        e.printStackTrace();
    }

}
}

这给我以下错误信息:
java.lang.IllegalArgumentException:主机名可能不为null

我也尝试过使用httpurlconnection:

public class TestService2 extends IntentService {

public TestService2() {
    super("TestService2");
}

@Override
protected void onHandleIntent(Intent intent) {
    String urlString="http://tin_images.storage.googleapis.com/1420678062-zmj1qJQe126843HbyJvbUI.jpg";
    try {
        URL url = new URL(urlString);
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("GET");
        urlConnection.setDoOutput(true);
        urlConnection.connect();
    }
    catch(IOException e){
        e.printStackTrace();
    }
}
}

此处的错误(在catch-block中捕获)是
java.net.UnknownHostException:http://tin_images.storage.googleapis.com/1420678062-zmj1qJQe126843HbyJvbUI.jpg

在这两种情况下,如果我使用其他网址,它的工作正常。我更喜欢使用HttpClient,因为我在应用程序的其余部分使用该库。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

如上所述here,HttpClient似乎不是support underscores for hostname

此外,关于在域名和主机名上使用下划线还有很长的discussion

答案 1 :(得分:0)

你没有忘记这件事:

android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.READ_PHONE_STATE

还尝试从默认的Web浏览器应用程序中打开此图像。

我建议您使用通用图像加载器https://github.com/nostra13/Android-Universal-Image-Loader

下载图像