我正在尝试获取必发API http://docs.developer.betfair.com/docs/display/使用 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
作为类型定义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
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)