我正在使用Rest工具Chrome客户端测试API,以验证我所做的POST请求是否正确,以便在Java应用程序中使用它。我的请求采用以下格式:
POST /androidhub/publishers/android/messages?timeout=60&api-version=2014-01
HTTP/1.1 HOST: androidhub-124.servicebus.windows.net
authorization: SharedAccessSignature sr=androidhub-124.servicebus.windows.net&sig=mykeySAS=&se=146480684&skn=RootManageSharedAccessKey
content-type: application/json, application/atom+xml;type=entry;charset=utf-8
content-length: 45 { "DeviceId":"dev-01", "Temperature":"37.0" }
但我有以下错误。
<Error>
<Code>401</Code>
<Detail>ExpiredToken: . TrackingId:2f6d284e-d7d2-4c9c-81a5-79c542ce8eee_G7, SystemTracker:androidhub-124.servicebus.windows.net:androidhub/publishers/android/messages, Timestamp:5/25/2016 7:13:33 PM</Detail>
</Error>
在使用之前,钥匙已经重新生成了。我如何在没有确定密钥到期时间的情况下得到错误或提出请求?
谢谢
答案 0 :(得分:1)
根据我的经验,如果 drop: function (event, ui) {
var droppable = $(this);
var draggable = ui.draggable;
parentOffset = $(this).offset();
var offset = $(draggable).offset();
var xPos = offset.left;
var yPos = offset.top;
draggable.css({
"left": xPos - parentOffset.left,
"top": yPos - parentOffset.top,
"position": "absolute"
}).appendTo(droppable);
}
值se
在此处正确发布,我认为该问题是由146480684
时间作为expiry
键测量的当前时间与1970年1月1日午夜时间之间的秒数。
因此,使用下面的Java代码可以获得se
时间作为expiry
键的值。
se
作为参考,您可以参考C#的官方文档,请参阅https://msdn.microsoft.com/en-us/library/azure/mt652140.aspx。
答案 1 :(得分:0)
除了设置正确的se
值之外,还必须确保sig
是由两个命名空间(在您的情况下为{{ 1}})和androidhub-124
,使用SAS密钥进行签名。
Microsoft here提供了在Java中生成se
的示例代码:
sig