1

こんにちは、私はこの wininet 機能に深刻な問題を抱えています。Windows 7 でプログラムを実行すると、すべてが完全に機能しますが、Windows XP Service Pack 3 で使用しようとすると、HttpSendRequst が完了するまでに時間がかかりすぎて、理由は本当にわかりませんし、同じリクエストに対して、ほぼ瞬時に終了することもあります。プログラムでウェブサイトを読み込んでいます。

wininet での Win 7 と XP の違いは何ですか? 私はほとんどすべてを試しましたが、うまくいきません。たとえば、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());
4

2 に答える 2

0

リクエストが正常に完了したことを確認しますか? テキスト付きの応答コードがあるはずです。そうしないと、異常終了によって高速リクエストが発生する可能性があります。

これが完全なコード サンプルである場合は、HttpEndRequestを追加することをお勧めします。

于 2010-12-09T10:06:26.357 に答える
0

リクエストがまったく終了しないときに、この問題が数回発生しました。

これに対して私が見つけた唯一の解決策は、プログラムに各要求の間に十分な時間を与えることです。

したがって、バッファを使用してすべてのデータを保存および追加し、リクエストを介してデータを送信するたびに X 回送信できます。

于 2019-04-15T12:22:06.490 に答える