如何解决 WinHttpSendRequest 的错误 ERROR_PROC_NOT_FOUND

问题描述

我正在尝试从我的 C++ 应用程序中获取来自远程 Web 服务器的响应。我正在使用 winHttpSendRequest 将请求发送到网络服务器。但是 winHttpSendRequest 失败,错误代码为 127,即 ERROR_PROC_NOT_FOUND。我无法理解为什么我的应用程序无法找到提到的 Web 服务器。我检查了网络服务器机器是否回复了 ping。 WinHttpSendRequest 失败并显示错误 127,但我正确发送了所有详细信息。

wstring baseurl = L"myserverName.test.com",url =L"/webserver/RestAPIEnty/GetFile?guid=GDHHHRRTTCCC12GST56677"

DWORD port = 443;
HINTERNET session =  WinHttpOpen(L"operation",WINHTTP_ACCESS_TYPE_NO_PROXY,NULL,0);
if (!session)
    print("error");

HINTERNET connection = WinHttpConnect(session,baseurl.c_str(),(INTERNET_PORT)port,0);
if (!connection)
    print("error while opening connection);


DWORD dwOpenFlags = 0;// INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_IGnorE_REDIRECT_TO_HTTP | INTERNET_FLAG_IGnorE_REDIRECT_TO_HTTPS | INTERNET_FLAG_IGnorE_CERT_CN_INVALID | INTERNET_FLAG_IGnorE_CERT_DATE_INVALID | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_PRAGMA_NOCACHE;
if (port == INTERNET_DEFAULT_HTTPS_PORT)
{
    dwOpenFlags |= WINHTTP_FLAG_SECURE;
}
HINTERNET request = WinHttpOpenRequest(connection,L"GET",url.c_str(),WINHTTP_NO_REFERER,WINHTTP_DEFAULT_ACCEPT_TYPES,dwOpenFlags);

if (!request)
    print("error");
else
    print(open successful);

// set receive timeout to 60 seconds.
DWORD receiveTimeout = 60000;
if (!WinHttpSetoption(request,WINHTTP_OPTION_RECEIVE_TIMEOUT,(LPVOID)&receiveTimeout,(DWORD)sizeof(receiveTimeout)))
{
    print("error [%ld] in increasing receive timeout to 60 seconds",GetLastError());
}

DWORD secFlags = Security_FLAG_IGnorE_CERT_CN_INVALID | Security_FLAG_IGnorE_CERT_DATE_INVALID | Security_FLAG_IGnorE_UNKNowN_CA;
if (!WinHttpSetoption(request,WINHTTP_OPTION_Security_FLAGS,(LPVOID)&secFlags,(DWORD)sizeof(secFlags)))
{
    print( "error [%ld] in setting INTERNET_OPTION_Security_FLAGS",GetLastError());
}

print( " After setting receive timeout to 60 seconds");

DWORD dwStatus;
wstring header;
wstring token = "vfdvfdbbvsdjvbdjkfvbdxjbjkvjkvdjjk";
if (!token.empty())
{
    header = L"Cookie2:";
    header += token;

    if (!WinHttpAddRequestHeaders(request,header.c_str(),(DWORD)-1,WINHTTP_ADDREQ_FLAG_ADD | WINHTTP_ADDREQ_FLAG_REPLACE))
    {
        m_event.DebugLvl(__FUNCTION__,LVL_DEBUG_LOW4,"Unable to set cookie2 header.error[%ld]",GetLastError());
    }
}

// add ip address header
header = L"client-location:";
header += "192.168.7.22";

if (!WinHttpAddRequestHeaders(request,WINHTTP_ADDREQ_FLAG_ADD | WINHTTP_ADDREQ_FLAG_REPLACE))
{
    print("Unable to set client-location header. error [%ld]",GetLastError());
}
if (!WinHttpSendRequest(request,(DWORD)header.length(),0))
{
        print( "error [%ld] in HttpSendRequest",GetLastError());  // I am getting error over here
        
        if (request)   WinHttpCloseHandle(request);
        if (connection)   WinHttpCloseHandle(connection);
        if (session)   WinHttpCloseHandle(session);
}



但是上面的调用GetLastError() 上给出了 127。我该如何解决这个问题?我只收到来自 WinHttpSendRequest错误;所有其他 winhttp API 均成功。

我错过了什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)