C libcurl标头 - 服务器未识别

C++ libcurl headers - not recognised by server

本文关键字:识别 服务器 libcurl 标头      更新时间:2023-10-16

我正在用libcurl在C 工作,编写一个程序来与某些API进行交互,而在标题中添加身份验证信息时,我一直困扰着。我是Libcurl和API的新手,具有C 的基本知识。身份验证需要一个API键和HMAC_SHA256的NONCE,然后将其放置在标题中。然后发送一个非常简单的JSON消息。我已经尝试在此站点上进行搜索,但是大多数示例似乎都在JavaScript或命令行中,但我在其中没有任何相关答案。

当我将发布消息发送到服务器时,我会得到响应402-无效的apikey。我的API键是100%正确的,因此我怀疑这与格式或将其包含在标题中的方式有关。该网站是闪烁的,他们的文档在这里,其中提供了一些有关标题要求的信息。

代码段:

char* message="{"MsgType": "U2","BalanceReqID": 1}";
curl_easy_setopt(curl, CURLOPT_URL, "https://api.blinktrade.com/tapi/v1/message");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, pFile2);
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, message);
struct curl_slist *header = NULL;
header = curl_slist_append(header, "APIKey:0000000000000000000000000000000000000000");    
header = curl_slist_append(header, "Nonce:1");
header = curl_slist_append(header, "Signature:1");
header = curl_slist_append(header, "Content-Type:application/json");
transfer = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header);
cout << transfer << endl;
transfer = curl_easy_perform(curl);
cout << transfer << endl;

我获得了curl_easy_setopt和curl_easy_perform的返回代码0。我已将API键的实际字符交换为0,但是在格式化等方面,所有内容都是相同的。错误。我尝试在结肠后添加一个空间,并以双引号封闭字符串和/或值,但是我得到了相同的响应。我做错了什么,这意味着我的标题实际上并未被服务器识别吗?

已解决:当您的API键不正确时,闪烁的服务器返回"无效的Apikey",而是签名不正确时。一个相当烦人的错误标签。