Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用HttpURLConnection的Android AWS S3签名V4 Post_Android_Amazon S3_Httpurlconnection - Fatal编程技术网

使用HttpURLConnection的Android AWS S3签名V4 Post

使用HttpURLConnection的Android AWS S3签名V4 Post,android,amazon-s3,httpurlconnection,Android,Amazon S3,Httpurlconnection,我正在尝试使用新的签名V4,而不是他们的SDK,使用HttpURLConnection(我最近从HttpClient升级)直接发布到Android上的AmazonS3。我的HttpURLConnection部分使用的是以前的签名版本(即使是多部分实体),因此我认为这不是问题所在,但如果是的话,我会提到它 代码如下所示: String charset = "UTF-8"; MultiPartUtility multipart = new MultiPartUtility(url, charset)

我正在尝试使用新的签名V4,而不是他们的SDK,使用
HttpURLConnection
(我最近从
HttpClient
升级)直接发布到Android上的AmazonS3。我的
HttpURLConnection
部分使用的是以前的签名版本(即使是多部分实体),因此我认为这不是问题所在,但如果是的话,我会提到它

代码如下所示:

String charset = "UTF-8";
MultiPartUtility multipart = new MultiPartUtility(url, charset);
multipart.addFormField("Content-Type", contentType);
multipart.addFormField("Policy", policy);
multipart.addFormField("key", key);
multipart.addFormField("acl", acl);
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
String date = formatter.format(new Date());
String credential = accessKey + "/" + date + "/" + region + "/s3/aws4_request";
multipart.addFormField("X-Amz-Signature", signature);
multipart.addFormField("X-Amz-Credential", credential);
multipart.addFormField("X-Amz-Date", date + "T000000Z"); // 
multipart.addFormField("x-amz-meta-uuid", uuid");
multipart.addFormField("x-amz-server-side-encryption","AES256");
multipart.addFormField("X-Amz-Algorithm","AWS4-HMAC-SHA256");
multipart.addFormField("x-amz-meta-tag","");

multipart.addFilePart("file", file);
String response = multipart.finish();
multipartity
类只是处理了与新的
HttpURLConnection
多部分实体帖子相关的所有疯狂问题(我认为在这种情况下仍然需要)。代码可以在这里找到,我还需要做一些小的修改:

这会导致文件结束异常,因此我怀疑这些值中有错误或格式不正确

从Amazon示例中,我发现在网页上发布的内容看起来像是在加密值:

在非HTTP示例中,看起来他们几乎是在将值推送到另一个对象中


有人这样做过吗

结果是我丢失了Content Type值-为空,然后导致文件结束异常。令人惊讶的是,例外如此模糊。哦,好吧