WEBSERVICE PARA CONSUTAR CEPS
Peguei uma rotina na Net que consome WebService para pesquisar Ceps, digitando o cep desejado, ele me retorna os demais dados. Funciona, beleza.
Agora, gostaria de saber como faço para realizar uma pesquisa, por exemplo o usuário digita um endereço e me mostre numa grid todos os endereços e os ceps do nome que foli digitado. Alguém pode me ajudar?
A rotina que eu estou utilizando é a seguinte:
Citação:Private Sub BtnConsultaCep_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConsultaCep.Click
Dim ds As New DataSet()
Dim xml As String = [Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=@cep&formato=xml[Ô].Replace([Ô]@cep[Ô], TxtCep.Text)
ds.ReadXml(xml)
TxtTipo.Text = ds.Tables(0).Rows(0)([Ô]tipo_logradouro[Ô]).ToString()
txtEndereco.Text = ds.Tables(0).Rows(0)([Ô]logradouro[Ô]).ToString()
txtBairro.Text = ds.Tables(0).Rows(0)([Ô]bairro[Ô]).ToString()
txtCidade.Text = ds.Tables(0).Rows(0)([Ô]cidade[Ô]).ToString()
txtUF.Text = ds.Tables(0).Rows(0)([Ô]uf[Ô]).ToString()
If TxtTipo.Text = [Ô][Ô] And txtEndereco.Text = [Ô][Ô] And txtBairro.Text = [Ô][Ô] And txtCidade.Text = [Ô][Ô] And txtUF.Text = [Ô][Ô] Then
MessageBox.Show([Ô]CEP não encontrado[Ô], [Ô]Erro de consulta[Ô], MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
End If
End Sub
Até mais.
2 - O único parâmetro disponibilizado é mesmo o cep, com retorno do logradouro.
3 - Existe uma função melhor para isso aqui
4 - Existe também uma base de dados offline para isso aqui, é a mesma base que essa URI usa
E, no meu caso, que queria fazer uma consulta para listar por endereço, tem como eu fazer?
Até mais.
[txt-color=#007100]http://www.vbmania.com.br/pages/index.php[/txt-color]?[txt-color=#0000f0]varModulo=Forum&varMethod=abrir&varID=432336&varWorld=[/txt-color]
A parte em verde, é a URL da página em si, contendo:
http:// -> protocolo usado para acesso, no caso, HyperText Transfer Protocol
www -> indica que o domÃnio está na World Wide Web
vbmania.com.br -> domÃnio, contendo sufixo br, indicando que o server é no Brasil
/pages -> diretório no domÃnio
/index.php -> a página em si
Já a outra parte, o que vem depois do [Ô]?[Ô], são parâmetros conhecidos como [Ô]QueryString[Ô], eles são separados por [Ô]&[Ô] e a estrutura básica é [Ô]Parâmetro=Valor[Ô]
No nosso caso temos:
varMethod=abrir
varID=432336
varWorld=
Cada um desses parâmetros, tem uma funcionalidade, que o programador constrói, ou seja, podem ser qualquer coisa que o programador quiser.
Esse conjunto todo, se dá o nome de URI, ou como visto acima Uniform Resource Identifier, (em inglês) e em português Identificador Uniforme de Recursos.
Os parâmetros de uma página, são construÃdos pelo programador, do mesmo modo que os parâmetros de um método. Portanto se o único parâmetro disponibilizado na página é CEP, é o único parâmetro que você pode passar e uma consulta por logradouro não será possÃvel. Se o programador da página dos CEP decidir implementar uma consulta por logradouro, aà sim você vai conseguir, senão, sem chance.
A importância de entendimento sobre URI, se torna muito mais evidente quando se está programando aplicações Web. Elas são extremamente úteis para facilitar a vida tanto do usuário quanto do programador. é através da URI que se efetua os famosos ataques de [Ô]URL Injection[Ô], onde o atacante muda os valores dos parâmetros, podendo até mesmo serem usados partÃculas de SQL. Muitos programadores web, não tomam os devidos cuidados ao construir páginas que têm dependência de parâmetros URI e simplesmente concatenam o parâmetro diretamente em uma query, sem utilizar parâmetros corretamente. Isso faz com que seja possÃvel concatenar qualquer coisa, inclusive outra query. Imagine a situação:
www.blablabla.com.br/login.php?usuario=zezinho
Dentro do código, se busca o valor do parâmetro [Ô]usuario[Ô] e se concatena em uma query:
usuario = QueryString([Ô]usuario[Ô])
//valor de usuario = [Ô]zezinho[Ô]
sql = [Ô]select * from usuarios where login = [ô][Ô] & usuario & [Ô][ô][Ô]
ExecutarSQL(sql)
Certo, qual o problema disso? Muito grave. Se no lugar de [Ô]zezinho[Ô], for colocado o seguinte:
[ô]; delete from usuarios; drop table usuarios; select [ô]nada[ô] from dual where [ô][ô] = [ô]
Isso faria com que a variável interna [Ô]usuario[Ô] tivesse esse valor, concatenando uma query extremamente perigosa e a fazendo ser executada:
usuario = QueryString([Ô]usuario[Ô])
//valor de usuario = [Ô][ô]; delete from usuarios; drop table usuarios; select [ô]nada[ô] from dual where [ô][ô] = [ô][Ô]
sql = [Ô]select * from usuarios where login = [ô][Ô] & usuario & [Ô][ô][Ô]
//valor da sql = [Ô]select * from usuarios where login = [ô][ô]; delete from usuarios; drop table usuarios; select [ô]nada[ô] from dual where [ô][ô] = [ô][ô]
ExecutarSQL(sql)
Vou estudar mais e tentar aprender mais (mas, só no ano que vem) rsrsrs.
Valeu, até mais.
Citação::
Gostei da explicação, Kerplunk. Realmente você é o cara!
Vou estudar mais e tentar aprender mais (mas, só no ano que vem) rsrsrs.
Valeu, até mais.
Tranquilo! Quando precisar, estamos ae...