WinHttpReceiveResponse-Funktion (winhttp.h)

Die WinHttpReceiveResponse-Funktion wartet auf den Empfang der Antwort auf eine http-Anforderung, die von WinHttpSendRequest initiiert wurde. Wenn WinHttpReceiveResponse erfolgreich abgeschlossen wurde, wurden die status Code- und Antwortheader empfangen und stehen der Anwendung zur Überprüfung mithilfe von WinHttpQueryHeaders zur Verfügung. Eine Anwendung muss WinHttpReceiveResponse aufrufen, bevor winHttpQueryDataAvailable und WinHttpReadData für den Zugriff auf den Antwortentitätstext (sofern vorhanden) verwendet werden kann.

Syntax

WINHTTPAPI BOOL WinHttpReceiveResponse(
  [in] HINTERNET hRequest,
  [in] LPVOID    lpReserved
);

Parameter

[in] hRequest

HINTERNET-Handle , das von WinHttpOpenRequest zurückgegeben und von WinHttpSendRequest gesendet wird. Warten Sie, bis WinHttpSendRequest für dieses Handle abgeschlossen ist, bevor Sie WinHttpReceiveResponse aufrufen.

[in] lpReserved

Dieser Parameter ist reserviert und muss NULL sein.

Rückgabewert

Gibt TRUE zurück, wenn erfolgreich, andernfalls FALSE . Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten. Zu den zurückgegebenen Fehlercodes gehören die folgenden.

Fehlercode BESCHREIBUNG
ERROR_WINHTTP_CANNOT_CONNECT
Wird zurückgegeben, wenn die Verbindung mit dem Server fehlgeschlagen ist.
ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW
Wird zurückgegeben, wenn während der Analyse der blockierten Codierung eine Überlaufbedingung auftritt.
ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED
Wird zurückgegeben, wenn der Server die Clientauthentifizierung anfordert.
ERROR_WINHTTP_CONNECTION_ERROR
Die Verbindung mit dem Server wurde zurückgesetzt oder beendet, oder es wurde ein inkompatibles SSL-Protokoll gefunden. Beispielsweise unterstützt WinHTTP Version 5.1 SSL2 nur, wenn der Client dies ausdrücklich aktiviert.
ERROR_WINHTTP_HEADER_COUNT_EXCEEDED
Wird zurückgegeben, wenn eine größere Anzahl von Headern in einer Antwort vorhanden war, als WinHTTP empfangen konnte.
ERROR_WINHTTP_HEADER_SIZE_OVERFLOW
Wird von WinHttpReceiveResponse zurückgegeben, wenn die Größe der empfangenen Header den Grenzwert für das Anforderungshandle überschreitet.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
Der angeforderte Vorgang kann nicht ausgeführt werden, da sich das angegebene Handle nicht im richtigen Zustand befindet.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Der Typ des angegebenen Handles ist für diesen Vorgang falsch.
ERROR_WINHTTP_INTERNAL_ERROR
Ein interner Fehler ist aufgetreten.
ERROR_WINHTTP_INVALID_SERVER_RESPONSE
Die Serverantwort konnte nicht analysiert werden.
ERROR_WINHTTP_INVALID_URL
Die URL ist ungültig.
ERROR_WINHTTP_LOGIN_FAILURE
Fehler beim Anmeldeversuch. Wenn dieser Fehler auftritt, sollte das Anforderungshandle mit WinHttpCloseHandle geschlossen werden. Ein neues Anforderungshandle muss erstellt werden, bevor die Funktion wiederholt wird, die diesen Fehler ursprünglich verursacht hat.
ERROR_WINHTTP_NAME_NOT_RESOLVED
Der Servername konnte nicht aufgelöst werden.
ERROR_WINHTTP_OPERATION_CANCELLED
Der Vorgang wurde abgebrochen, in der Regel, weil das Handle, für das die Anforderung ausgeführt wurde, vor Abschluss des Vorgangs geschlossen wurde.
ERROR_WINHTTP_REDIRECT_FAILED
Die Umleitung ist fehlgeschlagen, weil sich entweder das Schema geändert hat oder alle Umleitungsversuche fehlgeschlagen sind (Standardwert sind fünf Versuche).
ERROR_WINHTTP_RESEND_REQUEST
Fehler bei der WinHTTP-Funktion. Die gewünschte Funktion kann mit dem gleichen Anforderungshandle wiederholt werden.
ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW
Wird zurückgegeben, wenn eine eingehende Antwort ein internes WinHTTP-Größenlimit überschreitet.
ERROR_WINHTTP_SECURE_FAILURE
Mindestens ein Fehler wurde in dem SSL-Zertifikat (Secure Sockets Layer) gefunden, das vom Server gesendet wurde. Um zu ermitteln, welche Art von Fehler aufgetreten ist, suchen Sie in einer status Rückruffunktion nach einer WINHTTP_CALLBACK_STATUS_SECURE_FAILURE-Benachrichtigung. Weitere Informationen finden Sie unter WINHTTP_STATUS_CALLBACK.
ERROR_WINHTTP_TIMEOUT
Timeout für die Anforderung.
ERROR_WINHTTP_UNRECOGNIZED_SCHEME
Die URL hat ein anderes Schema als "http:" oder "https:" angegeben.
ERROR_NOT_ENOUGH_MEMORY
Es war nicht genügend Arbeitsspeicher verfügbar, um den angeforderten Vorgang abzuschließen. (Windows-Fehlercode)

Hinweise

Auch wenn WinHTTP im asynchronen Modus verwendet wird (d. h. wenn WINHTTP_FLAG_ASYNC in WinHttpOpen festgelegt wurde), kann diese Funktion entweder synchron oder asynchron ausgeführt werden. Wenn diese Funktion FALSE zurückgibt, ist bei dieser Funktion ein Fehler aufgetreten, und Sie können GetLastError aufrufen, um erweiterte Fehlerinformationen zu erhalten. Wenn diese Funktion TRUE zurückgibt, sollte die Anwendung entweder den WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE Abschlussrückruf erwarten, der den Erfolg angibt, oder den WINHTTP_CALLBACK_STATUS_REQUEST_ERROR Abschlussrückruf, der angibt, dass der Vorgang asynchron abgeschlossen wurde, aber fehlgeschlagen ist.

Wenn eine status Rückruffunktion mit WinHttpSetStatusCallback installiert wurde, zeigen die Benachrichtigungen der folgenden Benachrichtigungen, die im dwNotificationFlags-Parameter von WinHttpSetStatusCallback festgelegt wurden, den Fortschritt beim Empfang der Antwort an:

  • WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE
  • WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED
  • WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE
  • WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE
  • WINHTTP_CALLBACK_STATUS_REDIRECT
Wenn der Server die Verbindung schließt, werden auch die folgenden Benachrichtigungen gemeldet, sofern sie im dwNotificationFlags-Parameter von WinHttpSetStatusCallback festgelegt wurden:
  • WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION
  • WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED
Hinweis Informationen zu Windows XP und Windows 2000 finden Sie im Abschnitt Laufzeitanforderungen der WinHttp-Startseite .
 

Beispiele

Dieses Beispiel zeigt Code, der Daten auf einen HTTP-Server schreibt. Der im Beispiel angegebene Servername www.wingtiptoys.com ist fiktiv und muss durch den Namen eines Servers ersetzt werden, für den Sie Schreibzugriff haben.

    LPSTR pszData = "WinHttpWriteData Example";
    DWORD dwBytesWritten = 0;
    BOOL  bResults = FALSE;
    HINTERNET hSession = NULL,
              hConnect = NULL,
              hRequest = NULL;

    // Use WinHttpOpen to obtain a session handle.
    hSession = WinHttpOpen(  L"A WinHTTP Example Program/1.0", 
                             WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
                             WINHTTP_NO_PROXY_NAME, 
                             WINHTTP_NO_PROXY_BYPASS, 0);

    // Specify an HTTP server.
    if (hSession)
        hConnect = WinHttpConnect( hSession, L"www.wingtiptoys.com",
                                   INTERNET_DEFAULT_HTTP_PORT, 0);

    // Create an HTTP Request handle.
    if (hConnect)
        hRequest = WinHttpOpenRequest( hConnect, L"PUT", 
                                       L"/writetst.txt", 
                                       NULL, WINHTTP_NO_REFERER, 
                                       WINHTTP_DEFAULT_ACCEPT_TYPES, 
                                       0);

    // Send a Request.
    if (hRequest) 
        bResults = WinHttpSendRequest( hRequest, 
                                       WINHTTP_NO_ADDITIONAL_HEADERS,
                                       0, WINHTTP_NO_REQUEST_DATA, 0, 
                                       (DWORD)strlen(pszData), 0);

    // Write data to the server.
    if (bResults)
        bResults = WinHttpWriteData( hRequest, pszData, 
                                     (DWORD)strlen(pszData), 
                                     &dwBytesWritten);

    // End the request.
    if (bResults)
        bResults = WinHttpReceiveResponse( hRequest, NULL);

    // Report any errors.
    if (!bResults)
        printf("Error %d has occurred.\n",GetLastError());


    // Close any open handles.
    if (hRequest) WinHttpCloseHandle(hRequest);
    if (hConnect) WinHttpCloseHandle(hConnect);
    if (hSession) WinHttpCloseHandle(hSession);

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP, Windows 2000 Professional mit SP3 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003, Windows 2000 Server mit SP3 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winhttp.h
Bibliothek Winhttp.lib
DLL Winhttp.dll
Verteilbare Komponente WinHTTP 5.0 und Internet Explorer 5.01 oder höher unter Windows XP und Windows 2000.

Weitere Informationen

Informationen zu Microsoft Windows HTTP-Diensten (WinHTTP)

WinHTTP-Versionen

WinHttpCloseHandle

WinHttpOpen

WinHttpOpenRequest

WinHttpSendRequest