我需要使用我不理解的复杂身份验证过程连接到 API。我知道它涉及多个步骤,我试图模仿它,但我发现文档非常混乱......
这个想法是我向端点发出请求,该端点将向我返回一个令牌,我需要使用该令牌来建立 websocket 连接。
我确实得到了一个我不知道语法的 Python 代码示例,但我可以将其用作将其转换为 C# 语法的指南。
这是 Python 代码示例:
import time, base64, hashlib, hmac, urllib.request, json
api_nonce = bytes(str(int(time.time()*1000)), "utf-8")
api_request = urllib.request.Request("https://www.website.com/getToken", b"nonce=%s" % api_nonce)
api_request.add_header("API-Key", "API_PUBLIC_KEY")
api_request.add_header("API-Sign", base64.b64encode(hmac.new(base64.b64decode("API_PRIVATE_KEY"), b"/getToken" + hashlib.sha256(api_nonce + b"nonce=%s" % api_nonce).digest(), hashlib.sha512).digest()))
print(json.loads(urllib.request.urlopen(api_request).read())['result']['token'])
Run Code Online (Sandbox Code Playgroud)
所以我试图把它转换成 C#,这是我到目前为止得到的代码:
static string apiPublicKey = "API_PUBLIC_KEY";
static string apiPrivateKey = "API_PRIVATE_KEY";
static string endPoint = "https://www.website.com/getToken";
private void authenticate()
{
using (var client = new HttpClient())
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
// CREATE …
Run Code Online (Sandbox Code Playgroud) 我目前正在测试一个应用程序,但它向我抛出了一个错误的 JSON 转义序列,但是我没有看到问题......
我可能忽略了一些东西,所以一双新鲜的眼睛可能会有用。
messageContents = "{\"command\":\"cue\",\"channel\":1,\"uid\":\"aesd-deaf\",\"type\":\"standard\",\"waitforexecute\":true,\"duration\":0,\"scene\":[{\"name\":\"Scene1\",\"fields\":[{\"Quad1\":\"F:\\TestFolder\\mill.jpg\"}]}]}";
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
{"Bad JSON escape sequence: \\T. Path 'scene[0].fields[0].Quad1', line 1, position 150."}
Run Code Online (Sandbox Code Playgroud)
任何人都可以发现错误吗?谢谢,肯尼斯
我正在构建一个游戏应用程序.在我的表单上,我有一个datagridview,我想绑定不同玩家的选择.
我有一个特定的PlayerClass,我把它放在名为Players的列表中.
public class PlayerClass
{
public int Id {get; set;}
public string Name {get; set;}
public List<bool> choices {get; set;}
}
Public List<PlayerClass> Players;
Run Code Online (Sandbox Code Playgroud)
在此列表中,我将添加玩家针对不同问题所做出的选择.
为了显示所做的选择,我想将结果组合到datagridview中,其中每个玩家都有一列,每行代表该玩家为该特定问题给出的答案.
所以我想创建一个包含新类的列表,该类包含不同玩家为一个问题提供的所有答案.
public class ChoicesViewClass
{
public bool ChoicePlayer1 { get; set; }
public bool ChoicePlayer2 { get; set; }
public bool ChoicePlayer3 { get; set; }
public bool ChoicePlayer4 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是,如何使用Linq从第一个列表中填充辅助列表中的选项?
我正在尝试这样的事情:
grdChoices.DataSource = Players
.Select(s => new ChoicesViewClass{ ChoicePlayer1 = s, ChoicePlayer2 = s, ChoicePlayer3 = s, ChoicePlayer4 …
Run Code Online (Sandbox Code Playgroud) 我有一个页面,其中包含多个元素,这些元素都具有相同的类名.
其中一些正在重新定位,当我提交页面时,我想隐藏位于顶部的元素:0;
我一直在寻找一些建议,我尝试过这样的事情:
$('.myClass').not($('.myClass').css('top', '0')).fadeOut(300);
Run Code Online (Sandbox Code Playgroud)
但显然这不起作用:-)
其他人对如何做到这一点有所了解?
谢谢