Websocket Json请求错误,而不是常规错误
正在尝试通过WebSocket(WebSocketSharp)连接到 下面是登录json模型Websocket Json请求错误,而不是常规错误,websocket,json.net,Websocket,Json.net,正在尝试通过WebSocket(WebSocketSharp)连接到 下面是登录json模型 { "Id": <some unique Id>, "Request": "Login", "Params": { "AuthType": "HMAC", "WebApiId": <Web API Id>, "WebApiKey": <Web API Key>,
{
"Id": <some unique Id>,
"Request": "Login",
"Params": {
"AuthType": "HMAC",
"WebApiId": <Web API Id>,
"WebApiKey": <Web API Key>,
"Timestamp": <timestamp (e.g. Date.now())>,
"Signature": <signature>,
"DeviceId": <Device Id>
}
}
而不是正常的反应
{
"Id": <your unique Id>,
"Response": "Error",
"Error": <error description from TickTrader Server>
}
Json序列化输出
{
"Id": "be078b3d-2eb8-475a-97fb-89aedf775b78",
"Request": "Login",
"Params": {
"AuthType": "HMAC",
"WebApiId": "myid",
"WebApiKey": "mykey",
"Timestamp": "1467486605",
"Signature": "NbREH0HkPadfuDESuGEHho/FwX+DFdIoCV/D5aW/gv8=",
"DeviceId": "WebBrowser"
}
}
提前感谢终于发现了问题,时间戳似乎不应该是字符串,而应该是长字符串
LoginParams GetLogin()
{
return new LoginParams
{
Id = Guid.NewGuid().ToString(),
Request = "Login",
Params = new Parameters
{
AuthType = "HMAC",
WebApiId = "my id",
WebApiKey = "my api key",
Timestamp = ((long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds).ToString(),
Signature = Hmac.CreateToken(((long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds), "2058e846-0a32-49b9-bc8f-4e28afd0aa9c", "my id", "my key").ToString(),
DeviceId = "WebBrowser"
}
};
}
错误可能正是报告的内容:无效JSON。JSON示例没有实际数据,因此无法确定错误是什么。web和应用程序上都有JSON验证器,许多会解释确切的错误,请尝试一个。尝试输出似乎有效签名不是URL安全的,这是send方法的问题吗?不需要URL安全
{
"Id": "be078b3d-2eb8-475a-97fb-89aedf775b78",
"Request": "Login",
"Params": {
"AuthType": "HMAC",
"WebApiId": "myid",
"WebApiKey": "mykey",
"Timestamp": "1467486605",
"Signature": "NbREH0HkPadfuDESuGEHho/FwX+DFdIoCV/D5aW/gv8=",
"DeviceId": "WebBrowser"
}
LoginParams GetLogin()
{
return new LoginParams
{
Id = Guid.NewGuid().ToString(),
Request = "Login",
Params = new Parameters
{
AuthType = "HMAC",
WebApiId = "my id",
WebApiKey = "my api key",
Timestamp = ((long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds).ToString(),
Signature = Hmac.CreateToken(((long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds), "2058e846-0a32-49b9-bc8f-4e28afd0aa9c", "my id", "my key").ToString(),
DeviceId = "WebBrowser"
}
};
}