HttpSendRequest WININET застрял - занимает много времени, чтобы закончить - WINDOWS XP - PullRequest
1 голос
/ 07 декабря 2010

Привет, у меня серьезные проблемы с этой функцией wininet, когда я запускаю свою программу на Windows 7, все работает отлично, но когда я пытаюсь использовать ее в Windows XP с пакетом обновления 3. Иногда для HttpSendRequst требуется слишком много времени Готово, и я действительно не знаю, почему, а иногда и для одного и того же запроса, он заканчивается почти мгновенно. Я загружаю сайты с моей прогой.

В чем разница между Win 7 и XP в wininet? Я пытался почти все, но не работает. Например, установите время ожидания для Httpsendrequest и повторите снова или установите максимальное количество подключений к Интернету для получения дополнительной информации. Но, похоже, ничего не получалось, и функциональность всегда была одинаковой.

Пожалуйста, помогите, если можете.

m_hInternet = InternetOpenA(m_strAgentName.c_str(), INTERNET_OPEN_TYPE_PRECONFIG , 
            NULL, NULL, 0);
    if (!m_hInternet) {
        m_strLastError = "Cannot open internet";
        m_lastErrorCode = GetLastError();
        return false;
    }
m_hSession = InternetConnectA(m_hInternet, 
            m_strServerName.c_str(), 
            m_wPort,
            m_strUserName.c_str(), 
            m_strPassword.c_str(),
            INTERNET_SERVICE_HTTP,
            INTERNET_FLAG_KEEP_CONNECTION,
            0);
m_hRequest = HttpOpenRequestA(m_hSession, 
            this->m_strMethod.c_str(),
            m_strObjectName.c_str(),
            NULL,
            m_strReferer != "" ? m_strReferer.c_str() : NULL,
            NULL,
            INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_KEEP_CONNECTION, 
            m_ReqID);
bool result =  HttpSendRequestA(    m_hRequest,
                                    this->m_strAddHeaders.size() == 0 ? NULL : this->m_strAddHeaders.c_str(), 
                                    this->m_strAddHeaders.size(), 
                                    (char*)this->m_strContent.c_str(),
                                    this->m_strContent.size());

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Я сталкивался с этой проблемой пару раз, когда запрос вообще не завершался.

Единственное решение, которое я нашел для этого - дать программе достаточно времени между каждым запросом.

Таким образом, вы можете использовать буфер для хранения и добавления всех данных, и каждый раз, когда вы отправляете их через запрос!

0 голосов
/ 09 декабря 2010

Проверяете ли вы, что запрос успешно выполнен? Там должен быть некоторый код ответа с текстом. В противном случае ваши быстрые запросы могут быть вызваны ненормальным завершением.

Если это полный пример кода, я бы предложил добавить HttpEndRequest .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...