• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

the one

Receber valores por http - Visual Basic

50 mensagens neste tópico

Ola a todos .

Na continuidade do meu projecto (http://www.portugal-a-programar.pt/index.php?showtopic=27224) , onde gravo a data e IP do ultimo login na base de dados .

Bem, essa parte já está done , isso foi apenas para testar .

---

O que quero é uma pagina , em que nao apresenta nada, apenas a trabalhar em background , onde recebe dois dados ( utilizador e password ) de outro sitio (pode ser uma webapplication, windowsform, ou mesmo de uma dll) , valide na base de dados e grave os campos ip, e data caso passwor e utilizador estejam correcto .

O que eu não sei é como receber os dados de um outro sitio e grava-los numa variavel para fazer o UPDATE para a base de dados :x

Já andei a pesquisar e encontrei que tenho que definir

public string Connection { get; set; }

Mas que faz a varianel Connection ?  :wallbash:  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O protocolo HTTP não suporta que uma página fique a trabalhar em background.

O resto da tua dúvida não faz sentido nenhum.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O protocolo HTTP não suporta que uma página fique a trabalhar em background.

O resto da tua dúvida não faz sentido nenhum.

A unica coisa que a pagina retorna é um "ok" ou um "Nao ok" , depois de verificar na BD o user e a password .

Ok, talvez me tenha expressado mal , basicamente o que eu quero é receber dados de outra aplicação , e nesta pagina apenas inseri-los na base de dados :s

E obrigado por me tentares ajudar  :thumbsup::)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A forma mais simples é teres uma página que recebe os parâmetros na querystring. Então valida e tal e retorna a página a dizer ok ou nok.

A tua aplicação ou o que for, só tem de chamar a página e colocar os parâmetros na querystring. Está longe de ser a melhor forma mas é simples.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A forma mais simples é teres uma página que recebe os parâmetros na querystring. Então valida e tal e retorna a página a dizer ok ou nok.

A tua aplicação ou o que for, só tem de chamar a página e colocar os parâmetros na querystring. Está longe de ser a melhor forma mas é simples.

Humm, então o que eu preciso na "pagina em branco" é uma querystring ?

E como é que eu recebo os campos de outro sitio que não a "pagina em branco" ?

Por exemplo

cmd.Parameters.Add("@utilizador", SqlDbType.NVarChar).Value = ??? 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Cheira-me que não tens muita noção de HTTP.

Vê estes links para ver se ficas a compreender melhor o que tens de fazer.

http://en.wikipedia.org/wiki/Querystring

http://msdn.microsoft.com/en-us/library/system.web.httprequest.querystring.aspx

Eu quero usar o protocolo HTTP , para a transmição dos valores porque o meu orientador de projecto me disse que era mais facil .

No inicio, a ideia era criar um WebService , e utilizando o protocolo SOAP , ele faria isso , mas devido a proxys e afins, decidiu-se que se iria fazer , pelo protocolo HTTP .

Desculpa se não me estou a explicar bem . :s

A unica coisa que acho que me preocupar agora , é na forma como recebo os dados ;s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu quero usar o protocolo HTTP , para a transmição dos valores porque o meu orientador de projecto me disse que era mais facil .

No inicio, a ideia era criar um WebService , e utilizando o protocolo SOAP , ele faria isso , mas devido a proxys e afins, decidiu-se que se iria fazer , pelo protocolo HTTP .

Então é fazeres exactamente o que te disse.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Adicionei

using System.Collections.Specialized;

publiquei :

public NameValueCollection QueryString { get; set; }

no load da pagina :

                string connectionString2 = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\escola.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

                SqlConnection conn = new SqlConnection(connectionString2);
                conn.Open();
                SqlCommand cmd = new SqlCommand("UPDATE utilizadores set lastlogin = @lastlogin, lastip = @lastip where username = @utilizador", conn);


                NameValueCollection coll = Request.QueryString;

Agora como é que recebo os dados de outa aplicação ?  :wallbash:  :wallbash:

QUal é o codigo que tenho de usar ?  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se tencionas passar um nome de utilizador e uma password na query string, pelo menos tt q a password n fique espetada em claro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a) SOAP é por HTTP

:P Usar HTTP (em detrimento de SOAP) para passar valores ....  :nono:

c) SOAP dá para definir Proxy's

myWebService.TestWebService webservice = new myWebService.TestWebService();
webservice.Url = "http://test.com/webservice?wsdl";
WebProxy proxy = new WebProxy("1.2.3.4", 8080);
proxy.Credentials = new NetworkCredential("username", "password");
webservice.Proxy = proxy;

d) Se consegues chegar a uma máquina por um url HTTP, também o consegues por SOAP (Webservice)

e)Soap dá para passar credencias e tem segurança.

Estás cansado de "ler" a palavra soap? Se calhar é pq é o que deves usar .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A questão é que não tenho escolha, o prohecto foi-me pedido por HTTP, e é por HTTP que o tenho que fazer .

Estou a estagiar numa empresa, e não venho para aqui fazer os projectos à minha maneira , apenas tenho que seguir aquilo que eles querem .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A questão é que não tenho escolha, o prohecto foi-me pedido por HTTP, e é por HTTP que o tenho que fazer .

Estou a estagiar numa empresa, e não venho para aqui fazer os projectos à minha maneira , apenas tenho que seguir aquilo que eles querem .

proactividade = 0.

Por HTTP para passar parametros.

vê no google

Querystring parameters

Url Encoding

Base64 encoding

Por HTTP para receber parametros.

melhor será retornares XML e fazeres o dump desse XML para um Dataset.

para chamares as paginas.

string remoteUri = "http://www.zzz.xxx?nome=.............";        
WebClient client = new WebClient();
string XML = client.DownloadString(remoteUri);

       

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para receber os dados esta correctro assim ?

cmd.Parameters.AddWithValue("@utilizador", HttpRequest(User));

A ideia era receber a variavel chamada "User" . @Utilizador é a que vou usar aqui :

SqlCommand cmd = new SqlCommand("UPDATE utilizadores set lastlogin = @lastlogin, lastip = @lastip where username = @utilizador", conn);

Nota :

Publiquei isto

        private string ToQueryString(NameValueCollection nvc)
        {
            return "?" + string.Join("&", Array.ConvertAll(nvc.AllKeys, key => string.Format("{0}={1}", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(nvc[key]))));
        }



        public NameValueCollection QueryString { get; set; }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É em como receber os dados de uma string "Utilizador" e "password" .

Tenho isto .

SqlCommand comm = new SqlCommand("Select count(*) From utilizadores Where username = @utilizador And password = @password", sqlconn);

Agora, caso essas strings estivessem numa textbox utilizaria isto :

comm.Parameters.Add("@utilizador", SqlDbType.NVarChar).Value =  TextBox1.Text;

O que eu quero é recebe-la por HTTP .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Chegaste a ler os links que pus anteriormente para a QueryString?

Lá diz tudo o que precisas saber, principalmente o do msdn já que estás a usar C#.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou reformular toda a minha questão .

Agora tenho uma aplicação para Login, em Vb 2008 , em que só tem um form ( duas textbox para username e password, e um botão para efectuar o login) . Nessa aplicação de VB , vou ter 3 variaveis então , o Username , a Password , e IP . O que eu quero é enviar esses valores para uma Pagina em ASP , para lá ser feita a validação na base de dados , e retornar ao Form uma messagebox a dizer se o login foi feito com sucesso ou se o User ou Pass estão erradas .

Por onde devo comecar ?

Pela aplicação, ou comeco a fazer a pagina em ASP ?

Já agora, para conseguir enviar os dados para a pagina, ela tem de estar num servidor WEB ?

Vou usar o protocolo HTTP .

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por onde devo comecar ?

Pela aplicação, ou comeco a fazer a pagina em ASP ?

Eu escolheria pela página, já que permite-te logo testar a página, enquanto a aplicação só podes testar após teres a página feita.

Já agora, para conseguir enviar os dados para a pagina, ela tem de estar num servidor WEB ?

Sim, tem de estar num servidor WEB. O mais provável é teres isso no IIS local, pelo menos na altura de desenvolvimento e testes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora