WinHttpCreateUrl, fonction (winhttp.h)
La fonction WinHttpCreateUrl crée une URL à partir de composants tels que le nom d’hôte et le chemin d’accès.
Syntaxe
WINHTTPAPI BOOL WinHttpCreateUrl(
[in] LPURL_COMPONENTS lpUrlComponents,
[in] DWORD dwFlags,
[out] LPWSTR pwszUrl,
[in, out] LPDWORD pdwUrlLength
);
Paramètres
[in] lpUrlComponents
Pointeur vers une structure URL_COMPONENTS qui contient les composants à partir desquels créer l’URL.
[in] dwFlags
Indicateurs qui contrôlent le fonctionnement de cette fonction. Ce paramètre peut prendre les valeurs suivantes.
Valeur | Signification |
---|---|
|
Convertit tous les caractères non sécurisés en séquences d’échappement correspondantes dans la chaîne de chemin vers laquelle pointe le membre lpszUrlPath et, dans lpszExtraInfo , la chaîne d’informations supplémentaires pointée par le membre de la structure URL_COMPONENTS pointée par le paramètre lpUrlComponents . |
|
Rejette les URL en tant qu’entrée qui contient un nom d’utilisateur ou un mot de passe, ou les deux. Si la fonction échoue en raison d’une URL non valide, les appels suivants à GetLastError retournent ERROR_WINHTTP_INVALID_URL. |
[out] pwszUrl
Pointeur vers une mémoire tampon de caractères qui reçoit l’URL sous la forme d’une chaîne de caractères larges (Unicode).
[in, out] pdwUrlLength
Pointeur vers une variable de type entier long non signé qui reçoit la longueur de la mémoire tampon pwszUrl en caractères larges (Unicode). Lorsque la fonction retourne, ce paramètre reçoit la longueur de la chaîne d’URL large en caractères, moins 1 pour le caractère de fin. Si GetLastError retourne ERROR_INSUFFICIENT_BUFFER, ce paramètre reçoit le nombre de caractères larges requis pour contenir l’URL créée.
Valeur retournée
Retourne TRUE si la fonction réussit, ou FALSE dans le cas contraire. Pour obtenir des données d’erreur étendues, appelez GetLastError. Parmi les codes d’erreur retournés figurent les suivants.
Code d'erreur | Description |
---|---|
|
Une erreur interne s’est produite. |
|
Mémoire insuffisante pour terminer l’opération demandée. (Code d’erreur Windows) |
Remarques
Même lorsque WinHTTP est utilisé en mode asynchrone, c’est-à-dire quand WINHTTP_FLAG_ASYNC a été défini dans WinHttpOpen, cette fonction fonctionne de manière synchrone. La valeur de retour indique la réussite ou l’échec. Pour obtenir des données d’erreur étendues, appelez GetLastError.
Exemples
L’exemple suivant montre comment décompiler ou cracker une URL dans ses sous-composants, mettre à jour un composant, puis reconstruire l’URL.
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;
}
Configuration requise
Client minimal pris en charge | Windows XP, Windows 2000 Professionnel avec SP3 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003, Windows 2000 Server avec SP3 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winhttp.h |
Bibliothèque | Winhttp.lib |
DLL | Winhttp.dll |
Composant redistribuable | WinHTTP 5.0 et Internet Explorer 5.01 ou version ultérieure sur Windows XP et Windows 2000. |
Voir aussi
À propos des services HTTP Microsoft Windows (WinHTTP)