使用REST从s3存储桶下载文件

我试图从带有REST调用的s3存储桶下载。 我能够创建存储桶,删除存储桶和列表存储桶。 下载始终以找不到的对象或HTTP响应代码结束:403。代码如下。 也有人知道如果亚马逊是sdk可以与非亚马逊网站一起使用吗?

public void getObject() throws Exception { String fmt = "EEE, dd MMM yyyy HH:mm:ss "; SimpleDateFormat df = new SimpleDateFormat(fmt, Locale.US); df.setTimeZone(TimeZone.getTimeZone("GMT")); String ob2 = "/bucket/test.txt"; String bucket = "/bucket"; String method = "GET"; String contentMD5 = ""; String contentType = ""; String date = df.format(new Date()) + "GMT"; // Generate signature StringBuffer buf = new StringBuffer(); buf.append(method).append("\n"); buf.append(contentMD5).append("\n"); buf.append(contentType).append("\n"); buf.append(date).append("\n"); buf.append(ob2); String signature = sign(buf.toString()); HttpURLConnection httpConn = null; URL url = new URL("https”,”s3demo.s3demosite.com",443,bucket); httpConn = (HttpURLConnection) url.openConnection(); httpConn.setDoInput(true); httpConn.setDoOutput(true); httpConn.setUseCaches(false); httpConn.setDefaultUseCaches(false); httpConn.setAllowUserInteraction(true); httpConn.setRequestMethod(method); httpConn.setRequestProperty("Date", date); httpConn.setRequestProperty("Content-Length", "0"); String AWSAuth = "AWS " + keyId + ":" + signature; httpConn.setRequestProperty("Authorization", AWSAuth); // Send the HTTP PUT request. int statusCode = httpConn.getResponseCode(); InputStream err = httpConn.getErrorStream(); InputStream is = null; is = httpConn.getInputStream(); int ch; StringBuffer sb = new StringBuffer(); while ((ch = err.read()) != -1) { sb.append((char) ch); } if ((statusCode/100) != 2) { // Deal with S3 error stream. InputStream in = httpConn.getErrorStream(); System.out.println("Error: "+errorStr); } else { System.out.println("download worked”); } }