我正在尝试使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。但是我不知道哪个参数不好。
LPCWSTR
作为typedef const wchar_t*
。在Windows上,使用UTF-16编码。基本上,您是将8位ASCII字符串(headers
)类型转换为16位宽的字符串,并告诉WinHttpSendRequest()
计算该字符串的长度,因为它不是有效的宽字符串,所以失败了。
一种解决方案是首先使用适当的宽字符串:
const wchar_t *headers = L"X-Application: MakJhSABCDq8sbPIr\r\nAccept: application/json";
无论如何,用a指向字符串文字char*
是错误的,因为字符串文字是不可修改的,所以修改它们是未定义的行为。应该总是这样const
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句