[英]Azure Storage Rest API Authentication Header for Java Android
我正在研究 Android 项目,从 Azure Blob 存储下载图像,并且收到响应代码 400 授权 Header 无效。
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setConnectTimeout(15000);
connection.setReadTimeout(15000);
connection.setRequestMethod("GET");
Date date = new Date();
connection.setRequestProperty("Authorization","SAS Signature here?");
connection.setRequestProperty("x-ms-date", date.toString());
connection.setRequestProperty("x-ms-version", "2021-02-12");
connection.connect();
int response = connection.getResponseCode();
Log.e("Response Code:",String.valueOf(response));
Log.e("Response Message:",connection.getResponseMessage());
InputStream input = connection.getInputStream();
myBitmap = BitmapFactory.decodeStream(input);
Log.e("Bitmap","returned");
如果您使用的是 SAS 令牌,您实际上不必做任何您正在做的事情,因为 SAS 令牌具有所有必要的授权信息。 您所要做的就是使用 SAS URL(blob 端点 + SAS 令牌)创建连接,您应该能够下载 blob。
就像是:
URL url = new URL(src);//src would be something like https://account.blob.core.windows.net/container/blob.bmp?sastoken
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setConnectTimeout(15000);
connection.setReadTimeout(15000);
connection.setRequestMethod("GET");
connection.connect();
int response = connection.getResponseCode();
Log.e("Response Code:",String.valueOf(response));
Log.e("Response Message:",connection.getResponseMessage());
InputStream input = connection.getInputStream();
myBitmap = BitmapFactory.decodeStream(input);
Log.e("Bitmap","returned");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.