我正在尝试让betfair API使用Windows API。
我试图使用以下代码登录(用户名和密码已更改)。
char *headers = "X-Application: MakJhSABCDq8sbPIr\r\nAccept: application/json";
char *usernameandpassword = "username=mick&password=xyz123";
WinHttpSendRequest(
hrequest,
(LPCWSTR)headers,
-1,
usernameandpassword,
strlen(usernameandpassword),
strlen(usernameandpassword),
0);
但调用的返回值为ERROR_INVALID_PARAMETER。但我不知道哪个参数不好。
答案 0 :(得分:0)
LPCWSTR
作为const wchar_t*
的typedef。在Windows上,使用UTF-16编码。基本上,您将8位ASCII字符串(headers
)输入到16位宽的字符串,并告诉WinHttpSendRequest()
计算字符串长度,因为它不是有效的宽字符串而失败。
解决这个问题的方法是首先使用适当的宽字符串:
const wchar_t *headers = L"X-Application: MakJhSABCDq8sbPIr\r\nAccept: application/json";
无论如何,指向带有char*
的字符串文字是错误的,因为字符串文字不可修改,修改它们是未定义的行为。它应始终为const
。