Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: neg1414 en 10 Diciembre 2019, 08:51 am



Título: leer caracter de una web con InternetReadFile
Publicado por: neg1414 en 10 Diciembre 2019, 08:51 am
Buenas

tengo una pagina web MIWEB con el codigo

Código:
<?php

$Caracter = 'S';
echo $Caracter;
?>

Quiero leer desde mi aplicacion el valor de $Caracter y codifico

Código:
char  Buffer;
 DWORD BytesRead=0;

  const ::HINTERNET sesion = InternetOpen("agent",INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL,0);
  if(sesion!=NULL)
  {

     AnsiString Url = "http://www.MIWEB.ES";
     const ::HINTERNET handle = ::InternetOpenUrl(sesion,Url.c_str(),NULL,0, INTERNET_FLAG_RELOAD, 0);
     if(handle!=NULL)
     {
        while(InternetReadFile(handle,&Buffer,sizeof(Byte),&BytesRead))
        {
          if(BytesRead==0){break;}
        }
    }
    InternetCloseHandle(handle);
  }
  else
  {

  }
  InternetCloseHandle(sesion);

Pero Buffer ='/n'


Que Hago MAL Gracias.


Título: Re: leer caracter de una web con InternetReadFile
Publicado por: ThunderCls en 10 Diciembre 2019, 16:19 pm
Estas usando mal la funcion InternetReadFile

Código
  1. BOOLAPI InternetReadFile(
  2.  HINTERNET hFile,
  3.  LPVOID    lpBuffer,
  4.  DWORD     dwNumberOfBytesToRead,
  5.  LPDWORD   lpdwNumberOfBytesRead
  6. );

Parámetros
hFile: Identificador devuelto de una llamada anterior a InternetOpenUrl, FtpOpenFile o HttpOpenRequest.

lpBuffer: Puntero a un búfer que recibe los datos.

dwNumberOfBytesToRead: Número de bytes a leer.

lpdwNumberOfBytesRead: Puntero a una variable que recibe el número de bytes leídos. InternetReadFile establece este valor en cero antes de realizar cualquier trabajo o comprobación de errores.

Valor de retorno
Devuelve TRUE si tiene éxito o FALSE de lo contrario. Para obtener información de error extendida, llame a GetLastError. Una aplicación también puede usar InternetGetLastResponseInfo cuando sea necesario.


En tu caso tienes varios errores en tus parametros:
1- Estas usando el parametro lpBuffer como un char, cuando deberia ser un buffer o un array de chars, ej: char Buffer[MAX_BUFFER], o simplemente usar memoria dinamica
2- Estas usando el parametro dwNumberOfBytesToRead con valor 1 (sizeof(char) == 1). Necesitas especificar una mayor cantidad de bytes a leer, como una constante ej: #define MAX_BUFFER 1024
3- Al final tu linea podria quedar algo como:
Código
  1. while (InternetReadFile(handle, Buffer, MAX_BUFFER, BytesRead) == TRUE && BytesRead > 0)
  2. {
  3.    // tu codigo aqui
  4. }


Título: Re: leer caracter de una web con InternetReadFile
Publicado por: neg1414 en 12 Diciembre 2019, 08:30 am
Muchisimas gracias por contestar...

Solucionado.

Gracias otra vez.