 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Jue 20 May, 2010 5:57 pm Asunto: Applet Usuario/password |
|
|
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 |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Jue 20 May, 2010 11:14 pm Asunto: |
|
|
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 |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Jue 03 Jun, 2010 4:31 pm Asunto: |
|
|
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 |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Vie 04 Jun, 2010 6:37 pm Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|