为什么这个简单的测试代码会显示WinHttpConnect的任何猜测都会失败,错误代码为6(句柄无效或ERROR_INVALID_HANDLE):
HINTERNET internet = WinHttpOpen(L"test",WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,WINHTTP_NO_PROXY_NAME,WINHTTP_NO_PROXY_BYPASS,0);
assert(internet == (HINTERNET)1);
HINTERNET connect = WinHttpConnect(internet,L"www.microsoft.com",INTERNET_DEFAULT_HTTP_PORT,0);
assert(!connect);
DWORD err = GetLastError();
assert(err == 6);
所有上述断言都通过了。我在Win8 PC和Win2003服务器上运行此代码。两台不同的PC,同样的问题。我的原始代码更复杂并且作为服务运行,但我减少了这个代码,只是在用户模式(不是服务)的简单测试应用程序中运行它。
我的应用程序是使用较旧的编译器Borland Builder 6编译的,但不确定这应该是一个问题。
答案 0 :(得分:0)
我已经输入了我的问题,然后在我发布之前弄明白了。我没有删除或没有发布我的问题,我认为我应该分享这个,因为我知道其他人仍然坚持使用这个非常古老的编译器:(
C ++ Borland Builder 6不包含WinHTTP.LIB文件,因此我使用implib创建一个文件,就像我一直这样做。好吧,在这种情况下,您似乎需要使用-f标志强制它按名称而不是序数导入,否则会得到奇怪的结果。
implib -f winhttp.lib winhttp.dll
无论如何这对我有用,现在我的上面代码适用于Win2003服务器和Win8 PC。
很抱歉,我不知道从哪里获得WinHTTP.h文件,可能来自较新版本的Borland / Inspire编译器,因为Microsoft SDK通常不起作用。