Bagikan melalui


Fungsi WinHttpCreateUrl (winhttp.h)

Fungsi WinHttpCreateUrl membuat URL dari bagian komponen seperti nama host dan jalur.

Sintaks

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

Parameter

[in] lpUrlComponents

Arahkan ke struktur URL_COMPONENTS yang berisi komponen untuk membuat URL.

[in] dwFlags

Bendera yang mengontrol operasi fungsi ini. Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Makna
ICU_ESCAPE
Mengonversi semua karakter yang tidak aman ke urutan escape yang sesuai dalam string jalur yang ditunjukkan oleh anggota lpszUrlPath dan di lpszExtraInfo string informasi tambahan yang ditunjukkan oleh anggota struktur URL_COMPONENTS yang ditunjukkan oleh parameter lpUrlComponents .
ICU_REJECT_USERPWD
Menolak URL sebagai input yang berisi nama pengguna, atau kata sandi, atau keduanya. Jika fungsi gagal karena URL yang tidak valid, panggilan berikutnya ke GetLastError akan mengembalikan ERROR_WINHTTP_INVALID_URL.

[out] pwszUrl

Penunjuk ke buffer karakter yang menerima URL sebagai string karakter lebar (Unicode).

[in, out] pdwUrlLength

Penunjuk ke variabel jenis bilangan bulat panjang yang tidak ditandatangani yang menerima panjang buffer pwszUrl dalam karakter lebar (Unicode). Ketika fungsi kembali, parameter ini menerima panjang string URL lebar dalam karakter, dikurangi 1 untuk karakter yang mengakhiri. Jika GetLastError mengembalikan ERROR_INSUFFICIENT_BUFFER, parameter ini menerima jumlah karakter luas yang diperlukan untuk menahan URL yang dibuat.

Mengembalikan nilai

Mengembalikan TRUE jika fungsi berhasil, atau FALSE jika tidak. Untuk mendapatkan data kesalahan yang diperluas, hubungi GetLastError. Di antara kode kesalahan yang dikembalikan adalah sebagai berikut.

Kode Kesalahan Deskripsi
ERROR_WINHTTP_INTERNAL_ERROR
Terjadi kesalahan internal.
ERROR_NOT_ENOUGH_MEMORY
Tidak tersedia cukup memori untuk menyelesaikan operasi yang diminta. (Kode galat Windows)

Keterangan

Bahkan ketika WinHTTP digunakan dalam mode asinkron, yaitu, ketika WINHTTP_FLAG_ASYNC telah diatur di WinHttpOpen, fungsi ini beroperasi secara sinkron. Nilai yang dikembalikan menunjukkan keberhasilan atau kegagalan. Untuk mendapatkan data kesalahan yang diperluas, hubungi GetLastError.

Catatan Untuk Windows XP dan Windows 2000, lihat bagian Persyaratan Run-Time di halaman mulai WinHttp.
 

Contoh

Contoh berikut menunjukkan cara mendekompilasi, atau memecahkan, URL ke dalam subkomponennya, memperbarui komponen, lalu merekonstruksi 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;
    }

Persyaratan

   
Klien minimum yang didukung Windows XP, Windows 2000 Professional dengan SP3 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003, Windows 2000 Server dengan SP3 [hanya aplikasi desktop]
Target Platform Windows
Header winhttp.h
Pustaka Winhttp.lib
DLL Winhttp.dll
Redistribusi WinHTTP 5.0 dan Internet Explorer 5.01 atau yang lebih baru di Windows XP dan Windows 2000.

Lihat juga

Tentang Microsoft Windows HTTP Services (WinHTTP)

Menangani Pencari Sumber Daya Seragam

Versi WinHTTP

WinHttpCrackUrl