WinHttpConnect失败,GetLastError返回6

时间:2014-08-12 21:02:10

标签: c++builder winhttp

为什么这个简单的测试代码会显示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编译的,但不确定这应该是一个问题。

1 个答案:

答案 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通常不起作用。