Настала пора соединиться с Интернет. Эту потребность обслуживает ряд функций, описание которых приведено ниже. Необходимо отметить, что некоторые функции могут использоваться для операций, где, казалось бы очевидной прямой связи с Интернет, однако, не спешите с выводами. Здесь же приведены описания функций, необходимых для обработки URL - унифицированных локаторов ресурса, используемого в протоколах HTTP и в функциях контроля.
Ниже приведен список функций, рассмотренных в данной статье:
Функция InternetAutodial |
Заставляет модем автоматически звонить провайдеру для установки Интернет соединения, используемого по умолчанию.
Синтаксис команды регистрации функции для Visual FoxPro приведен ниже:
DECLARE INTEGER InternetAutodial IN wininet.dll;
INTEGER dwFlags,;
INTEGER dwReserved
Параметры:
dwFlags
Управляет этой операцией. Параметр может принимать одно из приведенных в таблице значений.
Символьная константа | Hex-значение | Описание |
INTERNET_AUTODIAL_FAILIFSECURITYCHECK |
4 |
Требует завершения вызова с ошибкой, если общий доступ к файлам и принтерам (Ffile and printer sharing) запрещены для операционной системы Microsoft® Windows® 95 или более поздней. |
INTERNET_AUTODIAL_FORCE_ONLINE |
1 |
Побуждает online соединение с Internet. |
INTERNET_AUTODIAL_FORCE_UNATTENDED |
2 |
Побуждает dial-up соединение без требования внимания пользователя к процессу дозвона. |
hwndParent
Handle to the parent window.
Return Values
Returns TRUE if successful, or FALSE otherwise.
Remarks
InternetAutodial does not support double-dial connections, SmartCard authentication, or connections that require registry-based certification.
Требования
смотри требования к клиенту, серверу и обозревателю Internet в таблице требований к системе.
|
Функция InternetAutodialHangup |
Рассоединяет соединение, установленное с помощью автодозвона.
Синтаксис команды регистрации функции для Visual FoxPro приведен ниже:
DECLARE INTEGER InternetAutodialHangup IN wininet.dll;
INTEGER dwReserved
Параметры:
dwReserved
Параметр зарезервирован и должен быть равен нулю.
Возвращаемые значения
Возвращает TRUE в случае удачного завершения операции, в противном случае FALSE
Требования
смотри требования к клиенту, серверу и обозревателю Internet в таблице требований к системе.
|
Функция InternetCheckConnection |
Позволяет приложению проверить, может ли быть установлено соединение с Internet.
Синтаксис команды регистрации функции для Visual FoxPro приведен ниже:
DECLARE INTEGER InternetCheckConnection IN wininet;
STRING lpszUrl,;
INTEGER dwFlags,;
INTEGER dwReserved
Параметры:
lpszUrl
Указатель на строку с нуль-терминатором, которая содержит URL, используемый для проверки возможности соединения. Это значение может быть NULL.
dwFlags
FLAG_ICC_FORCE_CONNECTION (0x00000001) является единственным флагом, доступным к данному моменту времени. Если этот флаг установлен, он побуждает установить соединение.
dwReserved
Параметр зарезервирован и должен быть равен нулю.
Возвращаемые значения
Возвращает TRUE в случае удачного завершения операции, в противном случае FALSE. Используйте функцию GetLastError для возврата кода ошибки. В случае, если соединение невозможно или недоступна база сокетов GetLastError вернет ERROR_NOT_CONNECTED (2250).
Примечания
Если lpszUrl не установлен в NULL, из него извлекается значение хоста и используется для ping'а указанного хоста.
Если lpszUrl установлен в NULL и имеется запись во внутренней базе данных сервера для ближайшего сервера, значение записи для хоста извлекается и используется для ping'а указанного сервера.
Ниже приведен код примера, использующего рассматриваемую функцию.
CLEAR
#Define FLAG_ICC_FORCE_CONNECTION 0x00000001
Declare Integer InternetCheckConnection In wininet;
STRING lpszUrl,;
INTEGER dwFlags,;
INTEGER dwReserved
Declare Integer GetLastError In kernel32
Local llCanConnect2Host, lnError, lcHost2Check
? "Checking http://kodu.neti.ee/~juri4"
lcHost2Check="http://kodu.neti.ee/~juri4"+CHR(0)
llCanConnect2Host=;
InternetCheckConnection(;
lcHost2Check,;
FLAG_ICC_FORCE_CONNECTION,;
0;
)
? Iif(;
llCanConnect2Host=0,;
"Can't connect to host!",
"Connection may be successfully established!";
)
lnError=GetLastError()
If lnError !=0
? "An error occurs on function call! Error number is:"
?? lnError
ENDIF
?
? "Checking nearest server"
llCanConnect2Host=;
InternetCheckConnection(;
.Null.,;
FLAG_ICC_FORCE_CONNECTION,;
0;
)
? Iif(;
llCanConnect2Host=0,;
"Can't connect to host!",
"Connection may be successfully established!";
)
lnError=GetLastError()
If lnError !=0
? "An error occurs on function call! Error number is:"
?? lnError
ENDIF
?
? "Checking unavailable host"
lcHost2Check="http://192.168.0.2/"+CHR(0)
llCanConnect2Host=;
InternetCheckConnection(;
lcHost2Check,;
FLAG_ICC_FORCE_CONNECTION,;
0;
)
? Iif(;
llCanConnect2Host=0,;
"Can't connect to host!",
"Connection may be successfully established!";
)
lnError=GetLastError()
If lnError !=0
? "An error occurs on function call! Error number is:"
?? lnError
ENDIF
Как видно из примера, рассматриваемую функцию можно использовать для контроля соединения с компьютером (ping'a) локальной сети, если в качестве хоста указать его IP адрес.
Требования
смотри требования к клиенту, серверу и обозревателю Internet в таблице требований к системе.
|
Функция InternetCreateUrl |
Создает URL (унифицированный локатор ресурса) из его составных частей.
Синтаксис команды регистрации функции для Visual FoxPro приведен ниже:
Declare Integer InternetCreateUrl In wininet ;
STRING lpUrlComponents,;
INTEGER dwFlags,;
STRING @lpszUrl,;
INTEGER @lpdwUrlLength
Параметры:
lpUrlComponents
Указатель на структуру URL_COMPONENTS , содержащую компоненты, из которых будет создан URL.
Структура URL_COMPONENTS описана в Microsoft Platform SDK и представляет собой следующее:
typedef struct {
DWORD dwStructSize;
LPTSTR lpszScheme;
DWORD dwSchemeLength;
INTERNET_SCHEME nScheme;
LPTSTR lpszHostName;
DWORD dwHostNameLength;
INTERNET_PORT nPort;
LPTSTR lpszUserName;
DWORD dwUserNameLength;
LPTSTR lpszPassword;
DWORD dwPasswordLength;
LPTSTR lpszUrlPath;
DWORD dwUrlPathLength;
LPTSTR lpszExtraInfo;
DWORD dwExtraInfoLength;
}
dwFlags
Управляет операцией этой функции. Этот параметр может принимать комбинацию значений, приведенных в таблице.
Символьная константа | Hex-значение | Описание |
ICU_ESCAPE |
0x80000000 |
Преобразует все небезопасные символы в их соответствующие escape-последовательности в строке пути, указанного членом lpszUrlPath структуры, а также в строке дополнительной информации, указанной членом lpszExtraInfo URL_COMPONENTS, на которую ссылается параметр lpUrlComponents. |
ICU_USERNAME |
- |
Устарела — игнорируется. |
lpszUrl
Указатель на буффер, который получит созданный URL.
lpdwUrlLength
Указатель на переменную, которая определяет размер буффера lpszUrl, измеряемый в TCHARs. При вызове функции, этот параметр получает размер URL строки, за вычетом символа нуль-терминатора. Если функция GetLastError возвратит ERROR_INSUFFICIENT_BUFFER (122), то этот параметр получит значение числа байтов, требуемых для хранения результата в буффере.
Возвращаемые значения
Возвращает TRUE в случае удачного завершения операции, в противном случае FALSE. Для получения расширенной информации об ошибке, в случае неудачного завершения операции, вызовите функцию GetLastError.
Примечания
Для понимания принципов работы со структурами в Visual FoxPro почитайте перевод статьи Кристофа Ланге и Марка Уилдена - Struct
Требования
смотри требования к клиенту, серверу и обозревателю Internet в таблице требований к системе.
|
Функция InternetCanonicalizeUrl |
Преобразует URL к общим правилам, что включает в себя преобразование небезопасных символов и пробелов в escape-последовательности.
Синтаксис команды регистрации функции для Visual FoxPro приведен ниже:
Declare Integer InternetCanonicalizeUrl IN wininet;
String lpszUrl,;
String @lpszBuffer,;
Integer pdwBufferLength,;
Integer dwFlags
Параметры:
lpszUrl
Указатель на строку, содержащую URL, которые требует приведения к общему виду.
lpszBuffer
Указатель на буффер, который получает преобразованный URL.
lpdwBufferLength
Указатель на переменную, которая содержит размер буффера lpszBuffer, измеряемый в символах. Если операция завершилась успешно, этот параметр получает подсчитанное число символов, которые реально скопированы в буффер lpszBuffer, зы вычетом символа нуль-терминатора. Если же вызов функции завершится с ошибкой, то этот параметр получит подсчитанный размер буффера, способный вместить результат, измеряемый в символах, включая символ нуль-терминатора.
dwFlags
Управляет процессом. Если флаги не указаны, функция преобразует все небезопасные символы и мета-последовательности, (такие как \.,\ .., и \...) в escape-последовательности. Этот параметр может иметь одно из приведенных в таблице значений:
Символьная константа | Hex-значение | Описание |
ICU_BROWSER_MODE |
0x02000000 |
Не перекодирует или не кодирует символы, после символов "#" или "?" и не удаляет хвостовые пробелы после "?". Если это значение не определено, полный URL перекодируется с удалением хвостовых пробелов. |
ICU_DECODE |
0x10000000 |
Преобразует все %XX последовательности в символы, включая escape-последовательности, до разбора (парсинга) URL. |
ICU_ENCODE_PERCENT |
0x00001000 |
Перекодирует любые встретившиеся знаки процента. По умолчанию, знак процента не перекодируется. Это значение возможно в Microsoft® Internet Explorer 5 и более поздних релизов. |
ICU_ENCODE_SPACES_ONLY |
0x04000000 |
Перекодирует только пробелы. |
ICU_NO_ENCODE |
0x20000000 |
Не преобразует небезопасные символы в escape-последовательности. |
ICU_NO_META |
0x08000000 |
Не удаляет мета-последовательности (такие, как "." и "..") из URL. |
Возвращаемые значения
Возвращает TRUE в случае удачного завершения операции, в противном случае FALSE.Для получения расширенной информации об ошибке, в случае неудачного завершения операции, вызовите функцию GetLastError. Возможные коды ошибок приведены в таблице:
Символьная константа | Hex-значение | Описание |
ERROR_BAD_PATHNAME |
161 |
URL не может быть приведен к общему виду. |
ERROR_INSUFFICIENT_BUFFER |
122 |
URL слишком велик, чтобы вместиться в предоставленный буффер. Параметр lpdwBufferLength устанавлен в размер, в байтах, требуемый для размещения результата - преобразованного URL. |
ERROR_INTERNET_INVALID_URL |
12005 |
Недействительный формат URL. |
ERROR_INVALID_PARAMETER |
87 |
Имеется недействительная строка, буффер, размер буффера или неверные флаги. |
Примечания
In Internet Explorer 4.0 and later, InternetCanonicalizeUrl always functions as if the ICU_BROWSER_MODE flag is set. Client applications that need to canonicalize the entire URL should use either CoInternetParseUrl (with the action PARSE_CANONICALIZE and the flag URL_ESCAPE_UNSAFE) or UrlCanonicalize.
InternetCanonicalizeUrl always encodes by default, even if the ICU_DECODE flag has been specified. To decode without re-encoding, use ICU_DECODE | ICU_NO_ENCODE. If the ICU_DECODE flag is used without ICU_NO_ENCODE, the URL is decoded before being parsed; unsafe characters are then re-encoded after parsing. This function handles arbitrary protocol schemes, but to do so it must make inferences from the unsafe character set.
Applications that call InternetCanonicalizeUrl when using Internet Explorer 3.0 (or when setting the ICU_ENCODE_PERCENT flag for Internet Explorer 5 and later) should track the usage of this function on a particular URL. If unsafe characters in a URL have been converted to escape sequences, using InternetCanonicalizeUrl again on the URL (with no flags) causes the escape sequences to be converted to another escape sequence. For example, a blank space in a URL would be converted to the escape sequence %20. Calling InternetCanonicalizeUrl again on the URL would cause the escape sequence %20 to be converted to the escape sequence %2520, because the % sign is an unsafe character that is reserved for escape sequences and is replaced by the function with the escape sequence %25.
If no flags are specified (dwFlags = 0), the function converts all unsafe characters and meta sequences (such as \.,\ .., and \...) to escape sequences.
Ниже приведен код примера, использующего рассматриваемую функцию.
Clear
#Define ICU_BROWSER_MODE 0x2000000
#Define ICU_DECODE 0x10000000
#Define ICU_ENCODE_PERCENT 0x1000
#Define ICU_ENCODE_SPACES_ONLY 0x4000000
#Define ICU_ESCAPE 0x80000000
#Define ICU_NO_ENCODE 0x20000000
#Define ICU_NO_META 0x8000000
#Define ICU_USERNAME 0x40000000
Declare Integer InternetCanonicalizeUrl In wininet;
String lpszUrl,;
String @lpszBuffer,;
Integer @lpdwBufferLength,;
Integer dwFlags
Declare Integer GetLastError In kernel32
Local lcURLBefore, lcURLAfter, lnBuffer_size, lnCallReturn, lnError
lcURLBefore = ;
"www.dotchego.net/search.htm?name=Juri Shutenko&term=full time"
lnBuffer_size = 250
lcURLAfter = Replicate(Chr(0), lnBuffer_size)
lnCallReturn=;
InternetCanonicalizeUrl(;
lcURLBefore,;
@lcURLAfter,;
@lnBuffer_size,;
ICU_ENCODE_SPACES_ONLY;
)
If lnCallReturn !=0
? "URL Before: "
?? lcURLBefore
? "URL After: "
?? Strtran(lcURLAfter,Chr(0),'')
Else
lnError=GetLastError()
If lnError !=0
? "An error occurs on function call! Error number is:"
?? lnError
Endif
Endif
Требования
смотри требования к клиенту, серверу и обозревателю Internet в таблице требований к системе.
|
Функция InternetCombineUrl |
Объединяет базовый и относительный URL в единый URL. Получаемы результат приводится к общему виду (смотри предыдущую функцию).
Синтаксис команды регистрации функции для Visual FoxPro приведен ниже:
Declare Integer InternetCombineUrl IN wininet;
String lpszBaseUrl,;
String lpszRelativeUrl
String @lpszBuffer,;
Integer @lpdwBufferLength,;
Integer dwFlags
Параметры:
lpszBaseUrl
Указатель на строку, содержащую базовый URL.
lpszRelativeUrl
Указатель на строку, содержащую относительный URL.
lpszBuffer
Указатель на буффер, который получает преобразованный URL.
lpdwBufferLength
Указатель на переменную, которая содержит размер буффера lpszBuffer, измеряемый в символах. Если операция завершилась успешно, этот параметр получает подсчитанное число символов, которые реально скопированы в буффер lpszBuffer, за вычетом символа нуль-терминатора. Если же вызов функции завершится с ошибкой, то этот параметр получит подсчитанный размер буффера, способный вместить результат, измеряемый в символах, включая символ нуль-терминатора.
dwFlags
Управляет процессом. Этот параметр может иметь одно из приведенных в таблице значений:
Символьная константа | Hex-значение | Описание |
ICU_BROWSER_MODE |
0x02000000 |
Не перекодирует или не кодирует символы, после символов "#" или "?" и не удаляет хвостовые пробелы после "?". Если это значение не определено, полный URL перекодируется с удалением хвостовых пробелов. |
ICU_DECODE |
0x10000000 |
Преобразует все %XX последовательности в символы, включая escape-последовательности, до разбора (парсинга) URL. |
ICU_ENCODE_PERCENT |
0x00001000 |
Перекодирует любые встретившиеся знаки процента. По умолчанию, знак процента не перекодируется. Это значение возможно в Microsoft® Internet Explorer 5 и более поздних релизов. |
ICU_ENCODE_SPACES_ONLY |
0x04000000 |
Перекодирует только пробелы. |
ICU_NO_ENCODE |
0x20000000 |
Не преобразует небезопасные символы в escape-последовательности. |
ICU_NO_META |
0x08000000 |
Не удаляет мета-последовательности (такие, как "." и "..") из URL. |
Возвращаемые значения
Возвращает TRUE в случае удачного завершения операции, в противном случае FALSE. Для получения расширенной информации об ошибке, в случае неудачного завершения операции, вызовите функцию GetLastError. Возможные коды ошибок приведены в таблице:
Символьная константа | Hex-значение | Описание |
ERROR_BAD_PATHNAME |
161 |
URL не может быть приведен к общему виду. |
ERROR_INSUFFICIENT_BUFFER |
122 |
URL слишком велик, чтобы вместиться в предоставленный буффер. Параметр lpdwBufferLength устанавлен в размер, в байтах, требуемый для размещения результата - преобразованного URL. |
ERROR_INTERNET_INVALID_URL |
12005 |
Недействительный формат URL. |
ERROR_INVALID_PARAMETER |
87 |
Имеется недействительная строка, буффер, размер буффера или неверные флаги. |
Ниже приведен код примера, использующего рассматриваемую функцию.
Clear
#Define ICU_BROWSER_MODE 0x2000000
#Define ICU_DECODE 0x10000000
#Define ICU_ENCODE_PERCENT 0x1000
#Define ICU_ENCODE_SPACES_ONLY 0x4000000
#Define ICU_ESCAPE 0x80000000
#Define ICU_NO_ENCODE 0x20000000
#Define ICU_NO_META 0x8000000
#Define ICU_USERNAME 0x40000000
DECLARE INTEGER InternetCombineUrl IN wininet;
STRING lpszBaseUrl,;
STRING lpszRelativeUrl,;
STRING @ lpszBuffer,;
INTEGER @ lpdwBufferLength,;
INTEGER dwFlags
Declare Integer GetLastError In kernel32
Local lcBaseURL, lcRelativeURL, ;
lcURLBefore, lcURLAfter, lnBuffer_size, lnCallReturn, lnError
lcBaseURL = "http://www.hot.ee/jurisfox/"
lcRelativeURL="../images/"
lnBuffer_size = 250
lcURLAfter = Replicate(Chr(0), lnBuffer_size)
lnCallReturn=;
InternetCombineUrl(;
lcBaseURL,;
lcRelativeURL,;
@lcURLAfter,;
@lnBuffer_size,;
ICU_BROWSER_MODE;
)
If lnCallReturn !=0
? "URL Before: "
?? lcBaseURL +[ and ]+lcRelativeURL
? "URL After: "
?? Strtran(lcURLAfter,Chr(0),'')
Else
lnError=GetLastError()
If lnError !=0
? "An error occurs on function call! Error number is:"
?? lnError
Endif
Endif
Требования
смотри требования к клиенту, серверу и обозревателю Internet в таблице требований к системе.
|
Функция InternetCrackUrl |
Разбирает URL на его составные части.
Синтаксис команды регистрации функции для Visual FoxPro приведен ниже:
Declare Integer InternetCrackUrl IN wininet ;
String lpszUrl,;
Integer dwUrlLength,;
Integer dwFlags, ;
String @lpUrlComponents
Параметры:
lpszUrl
Указатель на строку, содержащую приведенный к общему виду URL, подлежащий разбору на составные части.
dwUrlLength
Размер строки lpszUrl в TCHARs или 0, если lpszUrl представляет собой ASCIIZ строку.
dwFlags
Управляет операцией. Параметр может принять одно из приведенный в таблице значений
Символьная константа | Hex-значение | Описание |
ICU_DECODE |
0x10000000 |
Converts encoded characters back to their normal form. This can be used only if the user provides buffers in the URL_COMPONENTS structure to copy the components into. |
ICU_ESCAPE |
0x80000000 |
Converts all escape sequences (%xx) to their corresponding characters. This can be used only if the user provides buffers in the URL_COMPONENTS structure to copy the components into. |
lpUrlComponents
Указатедь на структуру URL_COMPONENTS, которая получает компоненты URL.
Возвращаемые значения
Возвращает TRUE в случае удачного завершения операции, в противном случае FALSE. Для получения расширенной информации об ошибке, в случае неудачного завершения операции, вызовите функцию GetLastError.
Примечания
Требуемые компоненты показываются членами структуры URL_COMPONENTS. Каждый компонент умеет указатель на значение и имеет члена, который хранит длину хранимого значения. Если оба члена - и значение и длина компонента равны нулю, тот этот компонент не возвращается. Если указатель на значение компонента представляет собой "пусто" - NULL, а значение его длины не равно нулю, адрес первого символа соответствующего элемента в строке lpszUrl хранится в указателе, а длина хранится в члене структуры, отвечающем за длину.
Если указатель содержит адрес предоставленного пользователем буффера, член структуру, хранящий длину, должен содержать размер буффера. InternetCrackUrl копирует компонент в буффер, а член структуры, хранящий длину устанавливает в значение длину копируемого компонента, за вычетом 1, учитывающей хвостовой символ нуль терминатора.
Для правильной работы InternetCrackUrl, размер структуры URL_COMPONENTS в байтах, должен храниться в члене структуру dwStructSize.
Описание структуры смотрите в описании функции InternetCreateUrl
Замечание
Не используйте InternetCrackUrl на URL протокола file://, который содержит пробелы, так как значение, возвращаемое в члене dwUrlPathLength структуры URL_COMPONENTS, указываемое с помощью lpUrlComponents слишком велико. Это, опять-таки применимо в случае, с URL "file:// ", который содержит символы пробелов.
Пример:
Требования
смотри требования к клиенту, серверу и обозревателю Internet в таблице требований к системе.
|
|