2013-05-14 3 views
1

Я хочу получить список объектов и папок, которые находятся в Bucket в Amazon S3, но я не могу, я не должен использовать Amazon S3 SDK.Подземные объекты Buzz Amazon S3 REST и Java без SDK

Важно не использовать SDK и только с Rest и Java, если я отправил запрос, а затем получил ответ. У меня есть метод, как это:

public String BucketSubList(String strPath) throws Exception { 

    String answer = null; 

    // S3 timestamp pattern. 
    String fmt = "EEE, dd MMM yyyy HH:mm:ss "; 
    SimpleDateFormat df = new SimpleDateFormat(fmt, Locale.US); 
    df.setTimeZone(TimeZone.getTimeZone("GMT")); 

    // Data needed for signature 
    String method = "GET"; 
    String contentMD5 = ""; 
    String contentType = ""; 
    String date = df.format(new Date()) + "GMT"; 
    String bucket = "/" + strPath + "/"; 

    // 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(bucket); 
    // try { 
    String signature = sign(buf.toString()); 

    // Connection to s3.amazonaws.com 
    URL url = new URL("http", "s3.amazonaws.com", 80, bucket); 

    HttpURLConnection httpConn = null; 
    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-Type", "text/plain"); 

    String AWSAuth = "AWS " + keyId + ":" + signature; 
    httpConn.setRequestProperty("Authorization", AWSAuth); 

    // Send the HTTP PUT request. 
    int statusCode = httpConn.getResponseCode(); 
    System.out.println(statusCode); 
    if ((statusCode/100) != 2) { 
     // Deal with S3 error stream. 
     InputStream in = httpConn.getErrorStream(); 
     String errorStr = getS3ErrorCode(in); 
     System.out.println("Error: " + errorStr); 
    } else { 
     answer = ""; 
     // System.out.println("Bucket listed successfully"); 
     InputStream inst = httpConn.getInputStream(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(inst)); 
     String decodedString; 
     while ((decodedString = in.readLine()) != null) { 
      answer += decodedString; 
      System.out.println(answer); 
     } 
     in.close(); 
    } 

    return answer; 
} 
+1

В чем проблема? –

+0

Это очень похоже на домашнее задание. –

ответ

1

Не зная, что ваша проблема, я просто не могу дать вам ссылку на AWS S3 Rest API.

This method делает то, что вы хотите.

Надеюсь, это может вам помочь.

В противном случае, пожалуйста, сообщите нам дополнительную информацию о вашей проблеме.

Смежные вопросы