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 |
---|---|
|
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. |
|
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 |
---|---|
|
Interner Fehler. |
|
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.
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)