Freigeben über


WinHttpCreateUrl-Funktion (winhttp.h)

Die WinHttpCreateUrl-Funktion erstellt eine URL aus Komponententeilen wie hostnamen und pfad.

Syntax

WINHTTPAPI BOOL WinHttpCreateUrl(
  [in]      LPURL_COMPONENTS lpUrlComponents,
  [in]      DWORD            dwFlags,
  [out]     LPWSTR           pwszUrl,
  [in, out] LPDWORD          pdwUrlLength
);

Parameter

[in] lpUrlComponents

Zeiger auf eine URL_COMPONENTS Struktur, die die Komponenten enthält, aus denen die URL erstellt werden soll.

[in] dwFlags

Flags, die den Betrieb dieser Funktion steuern. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
ICU_ESCAPE
Konvertiert alle unsicheren Zeichen in die entsprechenden Escapesequenzen in der Pfadzeichenfolge, auf die vom lpszUrlPath-Member verwiesen wird, und in lpszExtraInfo die Zeichenfolge für zusätzliche Informationen, auf die der Member der URL_COMPONENTS Struktur verweist, auf die der parameter lpUrlComponents verweist.
ICU_REJECT_USERPWD
Lehnt URLs als Eingabe ab, die entweder einen Benutzernamen, ein Kennwort oder beides enthält. Wenn die Funktion aufgrund einer ungültigen URL fehlschlägt, geben nachfolgende Aufrufe von GetLastError ERROR_WINHTTP_INVALID_URL zurück.

[out] pwszUrl

Zeiger auf einen Zeichenpuffer, der die URL als Breitzeichenzeichenfolge (Unicode) empfängt.

[in, out] pdwUrlLength

Zeiger auf eine Variable vom Typ unsigned long integer, die die Länge des pwszUrl-Puffers in Breitzeichen (Unicode) empfängt. Wenn die Funktion zurückgibt, empfängt dieser Parameter die Länge der URL-Zeichenfolge, die breit in Zeichen ist, minus 1 für das endende Zeichen. Wenn GetLastError ERROR_INSUFFICIENT_BUFFER zurückgibt, empfängt dieser Parameter die Anzahl von Breitzeichen, die zum Speichern der erstellten URL erforderlich sind.

Rückgabewert

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

Fehlercode BESCHREIBUNG
ERROR_WINHTTP_INTERNAL_ERROR
Interner Fehler.
ERROR_NOT_ENOUGH_MEMORY
Unzureichender Arbeitsspeicher, um den angeforderten Vorgang abzuschließen. (Windows-Fehlercode)

Hinweise

Selbst wenn WinHTTP im asynchronen Modus verwendet wird, d. h. wenn WINHTTP_FLAG_ASYNC in WinHttpOpen festgelegt wurde, wird diese Funktion synchron ausgeführt. Der Rückgabewert gibt Erfolg oder Fehler an. Rufen Sie GetLastError auf, um erweiterte Fehlerdaten zu erhalten.

Hinweis Informationen zu Windows XP und Windows 2000 finden Sie im Abschnitt Laufzeitanforderungen der WinHttp-Startseite .
 

Beispiele

Das folgende Beispiel zeigt, wie Sie eine URL in ihre Unterkomponenten dekompilieren oder knacken, eine Komponente aktualisieren und dann die URL rekonstruieren.


    URL_COMPONENTS urlComp;
    LPCWSTR pwszUrl1 = 
       L"http://search.msn.com/results.asp?RS=CHECKED&FORM=MSNH&v=1&q=wininet";
    DWORD dwUrlLen = 0;

    // Initialize the URL_COMPONENTS structure.
    ZeroMemory(&urlComp, sizeof(urlComp));
    urlComp.dwStructSize = sizeof(urlComp);

    // Set required component lengths to non-zero, 
    // so that they are cracked.
    urlComp.dwSchemeLength    = (DWORD)-1;
    urlComp.dwHostNameLength  = (DWORD)-1;
    urlComp.dwUrlPathLength   = (DWORD)-1;
    urlComp.dwExtraInfoLength = (DWORD)-1;

    // Crack the URL.
    if (!WinHttpCrackUrl( pwszUrl1, (DWORD)wcslen(pwszUrl1), 0, &urlComp))
    {
        printf("Error %u in WinHttpCrackUrl.\n", GetLastError());
    }
    else
    {
        // Change the search data. New data is the same length.
        urlComp.lpszExtraInfo = L"?RS=CHECKED&FORM=MSNH&v=1&q=winhttp";

        // Obtain the size of the new URL and allocate memory.
        WinHttpCreateUrl( &urlComp, 0, NULL, &dwUrlLen);
        LPWSTR pwszUrl2 = new WCHAR[dwUrlLen];

        // Create a new URL.
        if(!WinHttpCreateUrl( &urlComp, 0, pwszUrl2, &dwUrlLen))
        {
            printf( "Error %u in WinHttpCreateUrl.\n", GetLastError());
        }
        else
        {
            // Show both URLs.
            printf( "Old URL:  %S\nNew URL:  %S\n", pwszUrl1, pwszUrl2);
        }

        // Free allocated memory.
        delete [] pwszUrl2;
    }

Anforderungen

   
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)

Behandeln von Uniform Resource Locators

WinHTTP-Versionen

WinHttpCrackUrl