Hola escafandra, me imagino que su uso sería de esta manera:
InternetReadWeb('http://www.google.com', ?, ?)
Pero...¿qué valores se colocan en buffer y size?.
Saludos.
Posted 14 April 2009 - 01:21 PM
Hola escafandra, me imagino que su uso sería de esta manera:
InternetReadWeb('http://www.google.com', ?, ?)
Posted 14 April 2009 - 01:53 PM
Hola escafandra, me imagino que su uso sería de esta manera:cpp
InternetReadWeb('http://www.google.com', ?, ?)
Pero...¿qué valores se colocan en buffer y size?.
Saludos.
char Buffer[10]; InternetReadWeb("http://www.google.com", Buffer, 10)
Posted 07 September 2011 - 03:53 AM
Revivo este tema tras la pregunta realizada por mediazg en este otro hilo.
Para responder a la segunda pregunta que formulada mediazg acerca de cómo saber si tenemos conexión a Internet estando detrás de un proxy, he escrito un código y una aplicación de ejemplo que realiza esa labor:
uses Windows, Wininet; function Authenticate(URL, UserName, PassWord: String): boolean; var hInet, hConnect, hRequest: HINTERNET; dwStatus, StatusSize: DWORD; n: integer; URL_C: URL_COMPONENTS; begin StatusSize:= sizeof(dwStatus); ZeroMemory(@URL_C, sizeof(URL_COMPONENTS)); URL_C.dwStructSize:= sizeof(URL_COMPONENTS); URL_C.dwHostNameLength:= INTERNET_MAX_HOST_NAME_LENGTH; InternetCrackUrl(PCHAR(URL), Length(URL)+1, 0, URL_C); hInet:= InternetOpen('agent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); hConnect:= InternetConnect(hInet, URL_C.lpszHostName, INTERNET_INVALID_PORT_NUMBER, nil, nil, INTERNET_SERVICE_HTTP, 0,0); hRequest:= HttpOpenRequest(hConnect, 'GET', URL_C.lpszHostName, nil, nil, nil, INTERNET_FLAG_KEEP_CONNECTION, 0); for n:=0 to 1 do begin HttpSendRequest(hRequest, nil, 0, nil, 0); HttpQueryInfo(hRequest, HTTP_QUERY_FLAG_NUMBER or HTTP_QUERY_STATUS_CODE, @dwStatus, StatusSize, PCardinal(0)^); // Se requiere autentificación en el Proxy o en el servidor if (dwStatus = HTTP_STATUS_PROXY_AUTH_REQ) or (dwStatus = HTTP_STATUS_DENIED) then begin // Introducimos UserName InternetSetOption(hRequest, INTERNET_OPTION_PROXY_USERNAME, PCHAR(UserName), Length(UserName) + 1); // Introducimos el Password InternetSetOption(hRequest, INTERNET_OPTION_PROXY_PASSWORD, PCHAR(PassWord), Length(PassWord) + 1); end; end; InternetCloseHandle(hInet); InternetCloseHandle(hConnect); InternetCloseHandle(hRequest); Result:= (dwStatus <> HTTP_STATUS_PROXY_AUTH_REQ) and (dwStatus <> HTTP_STATUS_DENIED); end; function WebIng(URL: PCHAR): boolean; var hNet, hUrl: Pointer; BytesRead: DWORD; Buffer: array [0..64] of char; begin Result:= false; BytesRead:= 0; if InternetAttemptConnect(0) <> ERROR_SUCCESS then exit; hNet:= InternetOpen('WebIng', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if hNet <> nil then begin hUrl:= InternetOpenUrl(hNet, URL, nil, 0, INTERNET_FLAG_RELOAD {or INTERNET_FLAG_NO_AUTH}, 0); if hUrl <> nil then begin ZeroMemory(@Buffer[0], sizeof(Buffer)); Result:= InternetReadFile(hUrl, @Buffer[0], sizeof(Buffer), BytesRead); Result:= Result and (BytesRead > 0); InternetCloseHandle(hUrl); end; InternetCloseHandle(hNet); end; Result:= Result and (Pos('Access Denied', Buffer) = 0); end;
Authenticate('[url=http://www.google.com]www.google.com[/url]', 'User', 'Password'); if WebIng('[url=http://www.google.com]www.google.com[/url]') then Label1.Caption:= 'Exito' else Label1.Caption:= 'Fracaso';