- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 POC,我必须创建一个模拟设备并连接到 IOT HUB,这部分是在某个外部应用程序向该设备的 IOT HUB 发送消息之后完成的。
消息包含 blob 存储 SAS URI,我需要将这个文件下载到设备。
模拟设备能够获取 SAS URI,但是当我开始下载以下文件时,我收到了错误。
线程“main”com.microsoft.azure.storage.StorageException 中出现异常:服务器无法对请求进行身份验证。确保授权 header 的值格式正确,包括签名。
如果我的方法错误,请纠正我,并针对此用例使用适当的方法纠正我。
private static void download(String message) throws StorageException, IOException, JSONException, URISyntaxException {
// need to download the file to simulator in folder
try {
JSONObject jsonObject = new JSONObject(message);
String sasUri = (String) jsonObject.get("fileUrl");
System.out.println("SAS URI from hub ->" + sasUri + " ");
URI url = new URI(sasUri);
//downloadFile(sasUri);
System.out.println("end of file download function");
CloudBlob blob = new CloudBlockBlob(url);
blob.downloadToFile("/path/to/download/file");
} catch(Exception e) {
e.printStackTrace();
}
}
下面是 SAS URI :-
https://********.blob.core.windows.net/test/testfile.zip?sv=2017-07-29&ss=b&srt=sco&sp=rwdlac&se=2018-04-16T13:33 :22Z&st=2018-04-16T05:00:22Z&spr=https&sig=************
我直接从 azure 门户获取 SAS URI,而不是在运行时生成。
提前致谢!
最佳答案
为了缩小问题范围,您可以尝试以下方法看看是否有帮助。
通过单击“下载”在 Azure 门户中获取 blob 的 URI,如下所示:
之后,文件将被下载。您可以在资源管理器下载历史记录中找到该 URI。 URI 格式如下:
https://[storage-account].blob.core.windows.net/testdownload/20180417_4.zip?sv=2017-07-29&ss=bqtf&srt=sco&sp=rwdlacup&se=2018-04-19T15:52:15Z&sig=[signature]
在下面的代码片段中直接使用这个URI就可以了。
CloudBlob blob = new CloudBlockBlob(url);
await blob.DownloadToFileAsync(imgPath, System.IO.FileMode.CreateNew);
更新:从 Azure 门户获取blob 的绝对 URI 的另一种方法如下所示:
首先获取SAS token 。记下开始和到期日期/时间。 token 仅在该时间段内有效。
第二次获取blob URL。
最后,完整的blob 的绝对 URI 是 blob URL 加上 SAS token 。它会像这样:
https://ritastorageaccount.blob.core.windows.net/?sv=2017-07-29&ss=b&srt=sco&sp=rwdlac&se=2018-04-26T10:01:47Z&st=2018-04-26T02:01:47Z&spr=https&sig=[SIG]
关于azure - 如何将授权 header 添加到 SAS URI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49850849/
我是一名优秀的程序员,十分优秀!