【发布时间】: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