Jump to content

WebBrowser Control


Cableguy
 Share

Recommended Posts

Olá a todos...

uso uma linguagem derivada do .net....

O basic4ppc....(www.basic4ppc.com)

Nela posso usar dlls, e estou a usar num projecto um webbrowser control, com algumas propiedades e metodos que me interessam usar...

O meu problema é que PRECISO de fazer o download de um ficheiro, mas sem que o "DownloadFile dialog" apareça...

Não posso usar a dll de http, porque se trata de um forum, no qual preciso de fazer o login...

Alguma ideia?

Link to comment
Share on other sites

O Forum é um vBulletin e o Login é feito neste Form:

<!-- login form -->
	<form action="http://www.basic4ppc.com/forum/login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">
	<script type="text/javascript" src="clientscript/vbulletin_md5.js?v=3612"></script>

	<table cellpadding="0" cellspacing="3" border="0">
	<tr>
		<td class="smallfont"><label for="navbar_username">User Name</label></td>
		<td><input type="text" class="bginput" style="font-size: 11px" name="vb_login_username" id="navbar_username" size="10" accesskey="u" tabindex="101" value="User Name" onfocus="if (this.value == 'User Name') this.value = '';" /></td>
		<td class="smallfont" colspan="2" nowrap="nowrap"><label for="cb_cookieuser_navbar"><input type="checkbox" name="cookieuser" value="1" tabindex="103" id="cb_cookieuser_navbar" accesskey="c" />Remember Me?</label></td>
	</tr>
	<tr>
		<td class="smallfont"><label for="navbar_password">Password</label></td>

		<td><input type="password" class="bginput" style="font-size: 11px" name="vb_login_password" id="navbar_password" size="10" tabindex="102" /></td>
		<td><input type="submit" class="button" value="Log in" tabindex="104" title="Enter your username and password in the boxes provided to login, or click the 'register' button to create a profile for yourself." accesskey="s" /></td>
	</tr>
	</table>
	<input type="hidden" name="s" value="" />
<input type="hidden" name="securitytoken" value="a55b793e5e3f0de82892f0c0614f2523646715e9" />
	<input type="hidden" name="do" value="login" />		
	<input type="hidden" name="vb_login_md5password" />
	<input type="hidden" name="vb_login_md5password_utf" />

	</form>
	<!-- / login form -->

As variaveis "vb-login_username" e "vb_login_password" são valores que o utilizador tem que fornecer á minha aplicação na 1º vez que a corre...

Mas nao entendo que valor tem as variaveis "vb_login_md5password" e "vb_login_md5password_utf"...

Alguem me pode ajudar com este metodo POST?

desta forma sei que conseguia resolver o meu problema...

Link to comment
Share on other sites

O meu problema não sao os valores em si,, uma vez que eu SEI a password e por isso consigo reproduzir os dados...

Tenho uma versão deste formulario, simplificada ao maximo, apenas para permitir o LOG IN do utilizador, afim de obter uma "autenticação" no Forum...

O meu problema é que preciso de fazer o download de ficheiros de um sub-forum reservado a utilizadores "Autenticados", a quem se destina esta app..

Esta App tem como função manter actualizados, uma serie de ficheiros que vao sendo colocados nesse sub-forum por outros utilizadores...

usando o WebBrowser control eu consigo navegar para um link de download, mas nao tenho como "passar por cima" do dialogo de download do windows...

O Forum  pode depositar uma cookie, e eu sei que posso fazer o utilizador se "Logar" e permitir essa cookie...

mas como a posso usar num metodo POST????

Link to comment
Share on other sites

OK...Começando do principio..Se visitaste o link, percebeste que o forum é sobre um IDE de programação baseado em c# mas que NÃO é c#....(!)

Nele existe um sub-forum...AditionalLibraries...leia-se dlls...

è onde os utilizadores colocam as suas criações...

O problema que existe com a solução vigente...

é que é complicado ter a certeza que se tem a ultima versão de determinada dll...

daí criei um Post que é uma lista de links para as ultimas versoes de cada dll...

Depois surgiu a ideia...

e se em vez de o utilizador ter que ir á procura de quais as dlls que tiveram actualizações e descarrega-las..eu cria-se uma app que o fizesse automaticamente...?

O problema é que as dlls so estao disponiveis para download por utilizadores registados e com licencas de utilização do IDE activas...

essa Autenticação eu ja consegui, fazendo o login do utilizador de forma transparente...

Mas agora surge a necessidade de conseguir de facto um download, inicialmente de 1 pequeno ficheiro de Log, com a lista das versões correntes para comparar com a Log do "client", e depois para fazer o download do zip e xtrair os ficheiro relevante spara uma determinada pasta...

Link to comment
Share on other sites

???????Não percebi.....Como consigo "Ler" o ficheiro sem o descarregar?

Uma alternativa seria fazer +- o mesmo que com a Lista...Criar um Post com essa lista e extrair do html...

Mas é tipo tentar fazer sopa de pedra com areia....

depois tenho o problema dos ZIPs...

PS. se quiseres ver a autenticação a funcionar, envio-te a aplicação por mail, e fornece-te os dados necessarios...

Mas preciso do teu mail para isso...

Link to comment
Share on other sites

Como consigo "Ler" o ficheiro sem o descarregar?

o ficheiro está no servidor certo? abres o ficheiro através de um filestream qq, lês o conteúdo e mandas-o na resposta

sobre os zips:

o mais fácil seria um zip para cada dll, em que depois de detectados os ficheiros que o utilizador não tinha (actualizados) era gerada uma página com links, um link para cada file, deste modo dá mais trabalho ao utilizador mas este pode escolher quais é que quer

Link to comment
Share on other sites

Mas eu não tenho acesso ao servidor a não ser pelo forum...

Eu penso que te estou a perceber....

Ja agora entao, eu ponho a seguinte questao:

Visto que estou a utilizar um web browser control...Que tem varios methodos de navigate...è possivel obter uma tream com alguns desses methodos?

misturando webbrowser com http?

Link to comment
Share on other sites

se não tens acesso ao servidor a não ser pelo fórum onde é que vais alojar a tua aplicação? o ficheiro que queres ler estará na tua aplicação... mas se não vai estar no servidor do forum.... não sei se ele deixa cross site script

em relação ao controlo não sei  😛 nunca fiz/mexi em nenhum web browser control

Link to comment
Share on other sites

A ideia é cada utilizador "registado" poder sacar a aplicação do forum... e instala-la no seu pc...

durante o "First Run", serão introduzidos dados para a autenticação, a pasta de destino das dlls, e criado um Log "client-side" nessa mesma pasta...

No forum apenas terei que ter e manter actualizado o log "server-side" ou em file ou em text num Post... O que eu não queria fazer...

Link to comment
Share on other sites

o cookie tem informação dinâmica?

senão podias tentar (n sei se dá) criar um pedido http com cookie incluído para ir buscar esses files,

PS: ter um espaço online próprio sobre o qual a tua aplicação iria trabalhar não resolve?

em termos de trabalho de actualização dos ficheiros é quase o mesmo

ate amanha

Link to comment
Share on other sites

Já consegui ler um ficheiro de um URI, ou seja, o que precisavas 😉 não é download, é leitura, mas ainda é melhor já que terias que o ler de qq maneira

System.Net.WebClient client = new WebClient();

           using (Stream fs = client.OpenRead("http://www.codeprime.biz/blogs/license.txt"))
           {
               byte[] b = new byte[1024];
               UTF8Encoding temp = new UTF8Encoding(true);
               while (fs.Read(b, 0, b.Length) > 0)
               {
                   Console.WriteLine(temp.GetString(b));
               }
           }
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.