Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Applet Usuario/password

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Applet Usuario/password Responder citando

buen día amigos,

Tengo una página web donde visualizo cámaras IP, en forma de panel (se ven todas las cámaras).

El hecho , es que quiero visualizar una por una , en una ventana del Iexplorer aparte ( lo quiero hacer con Builder) , pero el hecho es que cuando abro en link con un TCppWebBrowser, salta un applet de Java pidiendome el usuario/password (que por supuesto tengo), hay alguna forma en Builder de llenar esos datos en automático o que no salga esa ventana pidiendo el user/pass y los pueda meter internamente?

Saludos y gracias de antemano.
_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Mediante la siguiente función puedes identificarte en el proxy. Una vez que lo hayas hecho, no necesitarás volverlo a hacer mientras no cierres tu aplicación. La autentificación es transparente al usuario:
Código:

bool Authenticate(char* URL, char* Username, char* Password)
{
   HINTERNET hInet,  hConnect, hRequest;
   DWORD dwStatus;
   DWORD dwStatusSize = sizeof(dwStatus);
   DWORD cchUserLength = strlen(Username);
   DWORD cchPasswordLength = strlen(Password);

   char c;
   URL_COMPONENTS URL_C = {sizeof(URL_COMPONENTS)};
   URL_C.lpszScheme = &c;
   URL_C.dwSchemeLength = 1;
   URL_C.lpszHostName = &c;
   URL_C.lpszUserName  = &c;
   URL_C.lpszPassword = &c;
   URL_C.lpszUrlPath = &c;
   URL_C.lpszExtraInfo = &c;

   InternetCrackUrl(URL, strlen(URL), ICU_DECODE, &URL_C);

   URL_C.lpszScheme = new char[URL_C.dwSchemeLength];
   URL_C.lpszHostName = new char[URL_C.dwHostNameLength];
   URL_C.lpszUserName  = new char[URL_C.dwUserNameLength];
   URL_C.lpszPassword = new char[URL_C.dwPasswordLength];
   URL_C.lpszUrlPath = new char[URL_C.dwUrlPathLength];
   URL_C.lpszExtraInfo = new char[URL_C.dwExtraInfoLength];

   InternetCrackUrl(URL, strlen(URL), ICU_DECODE, &URL_C);

   hInet = InternetOpen("agent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
   hConnect = InternetConnect(hInet, URL_C.lpszHostName,
                              INTERNET_INVALID_PORT_NUMBER,
                              NULL, NULL, INTERNET_SERVICE_HTTP, 0,0);

   hRequest = HttpOpenRequest(hConnect, "GET", URL_C.lpszUrlPath,
                              NULL, NULL, NULL,
                              INTERNET_FLAG_KEEP_CONNECTION, 0);

   delete [] URL_C.lpszScheme;
   delete [] URL_C.lpszHostName;
   delete [] URL_C.lpszUserName;
   delete [] URL_C.lpszPassword;
   delete [] URL_C.lpszUrlPath;
   delete [] URL_C.lpszExtraInfo;

   for(int n=0; n<2; n++){
      HttpSendRequest(hRequest, NULL, 0, NULL, 0);

      HttpQueryInfo(hRequest, HTTP_QUERY_FLAG_NUMBER |
                HTTP_QUERY_STATUS_CODE, &dwStatus, &dwStatusSize, NULL);

      // Se requiere autentificación en el Proxy o en el servidor
      if(dwStatus == HTTP_STATUS_PROXY_AUTH_REQ || dwStatus == HTTP_STATUS_DENIED){
        // Introducimos UserName
        InternetSetOption(hRequest, INTERNET_OPTION_PROXY_USERNAME, (void*)Username, lstrlen(Username)+1);
        // Introducimos el Password
        InternetSetOption(hRequest, INTERNET_OPTION_PROXY_PASSWORD, (void*)Password, lstrlen(Password)+1);
      }
   }
   return (dwStatus != HTTP_STATUS_PROXY_AUTH_REQ) && (dwStatus != HTTP_STATUS_DENIED);
}


Ejemplo de uso:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     Authenticate(Edit1->Text.c_str(), "User", "PassWord");
     CppWebBrowser1->Navigate(WideString(Edit1->Text).c_bstr());

}


Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Que tal Escafandra,

Perdón por la tardanza...traté de correr tu ejemplo pero me manda los siguientes errores:
Código:

[Linker Error] Unresolved external 'InternetCrackUrlA' referenced from C:\ARCHIVOS DE PROGRAMA\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
[Linker Error] Unresolved external 'InternetOpenA' referenced from C:\ARCHIVOS DE PROGRAMA\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
[Linker Error] Unresolved external 'InternetConnectA' referenced from C:\ARCHIVOS DE PROGRAMA\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
[Linker Error] Unresolved external 'HttpOpenRequestA' referenced from C:\ARCHIVOS DE PROGRAMA\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
[Linker Error] Unresolved external 'HttpSendRequestA' referenced from C:\ARCHIVOS DE PROGRAMA\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
[Linker Error] Unresolved external 'HttpQueryInfoA' referenced from C:\ARCHIVOS DE PROGRAMA\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
[Linker Error] Unresolved external 'InternetSetOptionA' referenced from C:\ARCHIVOS DE PROGRAMA\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ


Supongo que debe faltar poner algo más.

Saludos y gracias por la ayuda de antemano.
_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Debes añadir la ruta de librerías $(BCB)\Lib\PSDK\ para que se pueda enlazar Wininet.lib. Esto lo añades en las opciones del proyecto->Directories /Conditionals->Library Path.

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.