【问题标题】:java.net.UnknownHostException for bucketname.s3.amazonaws.combucketname.s3.amazonaws.com 的 java.net.UnknownHostException
【发布时间】:2014-02-27 19:32:19
【问题描述】:

我正在使用以下代码下载 s3。此代码来自我的 Android 应用。

public void downloadFile(String baseDir, String imageName) throws IOException {
    this.s3Client = new AmazonS3Client(new BasicAWSCredentials(accessKey,secretKey));

    String s3key = baseDir + "/" + imageName ;

    Log.d(tag, "downloading S3 file with key = " + s3key);

    S3ObjectInputStream content = null;
    try {
        content = s3Client.getObject(bucketName,s3key).getObjectContent();
    } catch(RuntimeException ex) {
        Log.e(tag, "error while downloding S3 file with key = " + s3key ,ex);
        throw new IOException(ex);
    }

当我执行此代码时,我得到以下异常:

02-28 00:48:53.589: D/s3dao(4078): downloading S3 file with key = level1/2_3.jpg
02-28 00:48:54.800: I/AmazonHttpClient(4078): Unable to execute HTTP request: fourpicstest.s3.amazonaws.com
02-28 00:48:54.800: I/AmazonHttpClient(4078): java.net.UnknownHostException: fourpicstest.s3.amazonaws.com
02-28 00:48:54.800: I/AmazonHttpClient(4078): at java.net.InetAddress.lookupHostByName(InetAddress.java:512)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:300)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at java.net.InetAddress.getAllByName(InetAddress.java:259)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.org.apache.http.impl.conn.DefaultClientConnectionOperator.resolveHostname(DefaultClientConnectionOperator.java:278)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:162)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:645)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:377)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:228)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3215)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1038)
02-28 00:48:54.800: I/AmazonHttpClient(4078): at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:920)

但是,当我触发 url:fourpicstest.s3.amazonaws.com 时,我得到“拒绝访问异常”

bucketfourpicstest 确实存在。

【问题讨论】:

  • @KEYSER,你可以成为一个优秀的 SO 编辑器并自己修复它,然后提醒 OP 良好的格式和语法很重要 :)
  • @Melquiades 我做到了。我不明白这是怎么回事。这不完全是我的责任。
  • @nikis 那篇文章是针对桌面的。我的代码是针对安卓手机的
  • @KEYSER,1. 你为什么删除了你的第一条评论? 2. 你没有在你的编辑中修复代码缩进,你在 3 上称之为 OP。我想说的是,作为 SO 用户,我们有责任保持问题干净、格式正确等,并教育其他人.不过这只是我的意见,当然,您可以随心所欲。

标签: java android amazon-web-services amazon-s3


【解决方案1】:

我自己解决了:清单文件中缺少互联网权限

在清单文件中添加以下内容解决了问题

<uses-permission android:name="android.permission.INTERNET"/>

【讨论】:

    猜你喜欢
    • 2015-09-27
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多