Funzione WinHttpCreateUrl (winhttp.h)
La funzione WinHttpCreateUrl crea un URL da parti del componente, ad esempio il nome host e il percorso.
Sintassi
WINHTTPAPI BOOL WinHttpCreateUrl(
[in] LPURL_COMPONENTS lpUrlComponents,
[in] DWORD dwFlags,
[out] LPWSTR pwszUrl,
[in, out] LPDWORD pdwUrlLength
);
Parametri
[in] lpUrlComponents
Puntatore a una struttura URL_COMPONENTS che contiene i componenti da cui creare l'URL.
[in] dwFlags
Flag che controllano l'operazione di questa funzione. Questo parametro può avere uno dei valori seguenti.
Valore | Significato |
---|---|
|
Converte tutti i caratteri non sicuri nelle sequenze di escape corrispondenti nella stringa di percorso a cui punta il membro lpszUrlPath e in lpszExtraInfo la stringa di informazioni aggiuntive a cui punta il membro della struttura URL_COMPONENTS a cui punta il parametro lpUrlComponents . |
|
Rifiuta gli URL come input che contengono un nome utente o una password o entrambi. Se la funzione ha esito negativo a causa di un URL non valido, le chiamate successive a GetLastError restituiranno ERROR_WINHTTP_INVALID_URL. |
[out] pwszUrl
Puntatore a un buffer di caratteri che riceve l'URL come stringa di caratteri wide (Unicode).
[in, out] pdwUrlLength
Puntatore a una variabile di tipo unsigned long integer che riceve la lunghezza del buffer pwszUrl in caratteri Wide (Unicode). Quando la funzione viene restituita, questo parametro riceve la lunghezza della stringa URL larga in caratteri, meno 1 per il carattere di terminazione. Se GetLastError restituisce ERROR_INSUFFICIENT_BUFFER, questo parametro riceve il numero di caratteri wide necessari per contenere l'URL creato.
Valore restituito
Restituisce TRUE se la funzione ha esito positivo o FALSE in caso contrario. Per ottenere dati di errore estesi, chiamare GetLastError. Tra i codici di errore restituiti sono riportati di seguito.
Codice di errore | Descrizione |
---|---|
|
An internal error occurred. |
|
Memoria insufficiente disponibile per completare l'operazione richiesta. (Codice errore di Windows) |
Commenti
Anche quando WinHTTP viene usato in modalità asincrona, ovvero quando WINHTTP_FLAG_ASYNC è stato impostato in WinHttpOpen, questa funzione funziona in modo sincrono. Il valore restituito indica l'esito positivo o negativo. Per ottenere dati di errore estesi, chiamare GetLastError.
Esempio
Nell'esempio seguente viene illustrato come decompilare o comprimere un URL nei relativi sottocomponenti, aggiornare un componente e quindi ricostruire 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;
}
Requisiti
Client minimo supportato | Windows XP, Windows 2000 Professional con SP3 [solo app desktop] |
Server minimo supportato | Windows Server 2003, Windows 2000 Server con SP3 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winhttp.h |
Libreria | Winhttp.lib |
DLL | Winhttp.dll |
Componente ridistribuibile | WinHTTP 5.0 e Internet Explorer 5.01 o versione successiva in Windows XP e Windows 2000. |
Vedi anche
Informazioni sui servizi HTTP di Microsoft Windows (WinHTTP)