使用具有Signature,Expiration和AccessKey的预签名URL将文件上传到Amazon S3,使用以下代码我可以使用普通的java代码上传文件,但Android中的相同代码给出了403错误.使用Amazon SDK生成预先指定的URL
我看过http://developer.android.com/reference/java/net/HttpURLConnection.html
和http://android-developers.blogspot.com/2011/09/androids-http-clients.html但不能弄清楚我应该使用什么标题参数,我想在android中它是在请求中设置标题哪个服务器拒绝
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("PUT");
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write("This text uploaded as object.");
out.close();
int responseCode = connection.getResponseCode();
例外:403;签名不匹配:-o
有人遇到过这个问题吗?
或者更多详细信息,从android库中添加Header参数?
解决方法:
请设置如下内容类型:
connection.setRequestProperty("Content-Type"," ");
因为HttpsUrlConnection的默认值自动生成内容类型为:
"Content-Type: application/x-www-form-urlencoded"
这将导致签名不匹配.