使用get参数调用Java rest

时间:2014-11-04 07:49:29

标签: java rest amazon-s3

如何在java中为休息调用添加参数或额外的行代码。

GET /ObjectName HTTP/1.1  
Host: BucketName.s3.amazonaws.com  
Date: date Authorization: authorization string (see Authenticating Requests (AWS  Signature Version 
4)) Range:bytes=byte_range

/Objectname之后将GET置于set方法会导致错误。

我使用的代码是;

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");`enter code here`
  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”);
 }
}

1 个答案:

答案 0 :(得分:0)

在REST服务中,您可以通过两种方式传递参数。

  1. 作为路径变量
  2. 作为查询参数。示例:GET /students/tomGET /students?name=tom