USO DO DATASET
Boa noite galera, estou tentando montar um esquema de buscar CEP pelo aplicativo usando xamarin, porem n reconhece o DataSet, tentei buscar na net para sei lá, estancia-lo, más não obtive sucesso!
Segue o código;
Segue o código;
try
{
DataSet ds = new DataSet();
string xml = [Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô] + cep.Text + [Ô]&formato=xml[Ô];
ds.ReadXml(xml);
string Endereco = ds.Tables(0).Rows(0)([Ô]logradouro[Ô]).ToString;
string Bairro = ds.Tables(0).Rows(0)([Ô]bairro[Ô]).ToString;
string Cidade = ds.Tables(0).Rows(0)([Ô]cidade[Ô]).ToString;
string Uf = ds.Tables(0).Rows(0)([Ô]uf[Ô]).ToString;
string tiporua = ds.Tables(0).Rows(0)([Ô]tipo_logradouro[Ô]).ToString;
DisplayAlert([Ô]Endereço buscado[Ô], tiporua + [Ô] [Ô] + Endereco + [Ô], Bairro [Ô] + Bairro + [Ô], [Ô] + Cidade + [Ô]/[Ô] + Uf, [Ô]Ok[Ô] );
}
catch (Exception ex)
{
DisplayAlert([Ô]Erro[Ô], ex.Message, [Ô]Ok[Ô]);
}
Não use DataSet, use List<T> e como está trazendo um XML, serialização.
Cara você ta fazendo do jeito mais difÃcil,
Do próprio site do República Digital, troque o formato=xml por formato=json, cole isso como json
{[Ô]resultado[Ô]:[Ô]1[Ô],[Ô]resultado_txt[Ô]:[Ô]sucesso - cep completo[Ô],[Ô]uf[Ô]:[Ô]RS[Ô],[Ô]cidade[Ô]:[Ô]Porto Alegre[Ô],[Ô]bairro[Ô]:[Ô]Passo D[ô]Areia[Ô],[Ô]tipo_logradouro[Ô]:[Ô]Avenida[Ô],[Ô]logradouro[Ô]:[Ô]Assis Brasil[Ô]} para criar a classe, ou crie na mão mesmo e use o httpClient para fazer o request, apenas isso e nada mais, o resultado você joga onde quiser.
Fui.
Do próprio site do República Digital, troque o formato=xml por formato=json, cole isso como json
{[Ô]resultado[Ô]:[Ô]1[Ô],[Ô]resultado_txt[Ô]:[Ô]sucesso - cep completo[Ô],[Ô]uf[Ô]:[Ô]RS[Ô],[Ô]cidade[Ô]:[Ô]Porto Alegre[Ô],[Ô]bairro[Ô]:[Ô]Passo D[ô]Areia[Ô],[Ô]tipo_logradouro[Ô]:[Ô]Avenida[Ô],[Ô]logradouro[Ô]:[Ô]Assis Brasil[Ô]} para criar a classe, ou crie na mão mesmo e use o httpClient para fazer o request, apenas isso e nada mais, o resultado você joga onde quiser.
Fui.
Achei um exemplo no StackOverflow Ler Xml Xamarin
E tentei dar uma resumida;
Porém não deu certo, onde estou errando?
E tentei dar uma resumida;
void btn_click (Object sender, EventArgs e)
{
try
{
string xml = [Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô] + cep.Text + [Ô]&formato=xml[Ô];
using (XmlReader xmR = XmlReader.Create(xml))
{
while (xmR.Read())
{
var cidade = Convert.ToString(xmR.GetAttribute([Ô]cidade[Ô]));
cid.Text = cidade;
}
}
}
catch (Exception ex)
{
DisplayAlert([Ô]Erro[Ô], ex.Message, [Ô]Ok[Ô]);
}
};
Porém não deu certo, onde estou errando?
(eu sei que é o mais dificil, porem é o jeito que achei mais facil kkkk)
Consegui importar DataSet porém
Apareceu o seguinte erro em ds.ReadXml:
e Também:
Consegui importar DataSet porém
DataSet ds = new DataSet();
string xml = [Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô] + cep.Text + [Ô]&formato=xml[Ô];
ds.ReadXml(xml);
string Endereco = ds.Tables[0].Rows[0][[Ô]logradouro[Ô]].ToString();
string Bairro = ds.Tables[0].Rows[0][[Ô]bairro[Ô]].ToString();
string Cidade = ds.Tables[0].Rows[0][[Ô]cidade[Ô]].ToString();
string Uf = ds.Tables[0].Rows[0][[Ô]uf[Ô]].ToString();
string tiporua = ds.Tables[0].Rows[0][[Ô]tipo_logradouro[Ô]].ToString();
DisplayAlert([Ô]Endereço buscado[Ô], tiporua + [Ô] [Ô] + Endereco + [Ô], Bairro [Ô] + Bairro + [Ô], [Ô] + Cidade + [Ô]/[Ô] + Uf, [Ô]Ok[Ô]);
Apareceu o seguinte erro em ds.ReadXml:
Citação:O tipo [Ô]XmlReader[Ô] está definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly [Ô]System.Xml, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e[Ô]
e Também:
Citação:Referência ao tipo [Ô]MarshalByValueComponent[Ô] declara que ele é definido em [Ô]System[Ô], mas não pode ser encontrado
eu uso em vb.net
Function BuscaCep(ByVal cep As String) As Hashtable
Dim ds As DataSet
Dim _resultado As String
Dim ht As System.Collections.Hashtable
Try
ds = New DataSet()
ds.ReadXml([Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô] + cep.Replace([Ô]-[Ô], [Ô][Ô]).Trim() + [Ô]&formato=xml[Ô])
If Not IsNothing(ds) Then
If (ds.Tables(0).Rows.Count > 0) Then
_resultado = ds.Tables(0).Rows(0).Item([Ô]resultado[Ô]).ToString()
ht = New Hashtable
Select Case _resultado
Case [Ô]1[Ô]
ht.Add([Ô]UF[Ô], ds.Tables(0).Rows(0).Item([Ô]uf[Ô]).ToString().Trim())
ht.Add([Ô]cidade[Ô], ds.Tables(0).Rows(0).Item([Ô]cidade[Ô]).ToString().Trim())
ht.Add([Ô]bairro[Ô], ds.Tables(0).Rows(0).Item([Ô]bairro[Ô]).ToString().Trim())
ht.Add([Ô]tipologradouro[Ô], ds.Tables(0).Rows(0).Item([Ô]tipo_logradouro[Ô]).ToString().Trim())
ht.Add([Ô]logradouro[Ô], ds.Tables(0).Rows(0).Item([Ô]logradouro[Ô]).ToString().Trim())
ht.Add([Ô]tipo[Ô], 1)
Case [Ô]2[Ô]
ht.Add([Ô]UF[Ô], ds.Tables(0).Rows(0).Item([Ô]uf[Ô]).ToString().Trim())
ht.Add([Ô]cidade[Ô], ds.Tables(0).Rows(0).Item([Ô]cidade[Ô]).ToString().Trim())
ht.Add([Ô]tipo[Ô], 2)
Case Else
ht.Add([Ô]tipo[Ô], 0)
End Select
End If
End If
Return ht
Catch ex As Exception
Throw New Exception([Ô]Falha ao Buscar o Cep[Ô] & vbCrLf & ex.ToString)
Return Nothing
End Try
End Function
Dim ht As System.Collections.Hashtable
ht = New Hashtable
ht = BuscaCep(ncep)
Function BuscaCep(ByVal cep As String) As Hashtable
Dim ds As DataSet
Dim _resultado As String
Dim ht As System.Collections.Hashtable
Try
ds = New DataSet()
ds.ReadXml([Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô] + cep.Replace([Ô]-[Ô], [Ô][Ô]).Trim() + [Ô]&formato=xml[Ô])
If Not IsNothing(ds) Then
If (ds.Tables(0).Rows.Count > 0) Then
_resultado = ds.Tables(0).Rows(0).Item([Ô]resultado[Ô]).ToString()
ht = New Hashtable
Select Case _resultado
Case [Ô]1[Ô]
ht.Add([Ô]UF[Ô], ds.Tables(0).Rows(0).Item([Ô]uf[Ô]).ToString().Trim())
ht.Add([Ô]cidade[Ô], ds.Tables(0).Rows(0).Item([Ô]cidade[Ô]).ToString().Trim())
ht.Add([Ô]bairro[Ô], ds.Tables(0).Rows(0).Item([Ô]bairro[Ô]).ToString().Trim())
ht.Add([Ô]tipologradouro[Ô], ds.Tables(0).Rows(0).Item([Ô]tipo_logradouro[Ô]).ToString().Trim())
ht.Add([Ô]logradouro[Ô], ds.Tables(0).Rows(0).Item([Ô]logradouro[Ô]).ToString().Trim())
ht.Add([Ô]tipo[Ô], 1)
Case [Ô]2[Ô]
ht.Add([Ô]UF[Ô], ds.Tables(0).Rows(0).Item([Ô]uf[Ô]).ToString().Trim())
ht.Add([Ô]cidade[Ô], ds.Tables(0).Rows(0).Item([Ô]cidade[Ô]).ToString().Trim())
ht.Add([Ô]tipo[Ô], 2)
Case Else
ht.Add([Ô]tipo[Ô], 0)
End Select
End If
End If
Return ht
Catch ex As Exception
Throw New Exception([Ô]Falha ao Buscar o Cep[Ô] & vbCrLf & ex.ToString)
Return Nothing
End Try
End Function
Dim ht As System.Collections.Hashtable
ht = New Hashtable
ht = BuscaCep(ncep)
Desse geito não funciona
adiciona :
https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl
Em vb.net
https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl
Em vb.net
Private Sub btn_Cep_Click(sender As Object, e As EventArgs) Handles btn_Cep.Click
Using WS = New WS_Correios.AtendeClienteClient()
Try
Dim Resultado = WS.consultaCEP(mskcep.Text)
Me.txt_endereco.Text = Resultado.[end]
Me.txt_complmento.Text = Resultado.complemento
Me.cdb_cidade.Text = Resultado.cidade
Me.txt_bairro.Text = Resultado.bairro
cdb_uf.Text = Resultado.uf
Catch ex As Exception
MessageBox.Show(ex.Message, [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.[Error])
End Try
End Using
End Sub
No xamarin cross plataform não tem Referencia Web
Este foi convertido de um exemplo do site.
private void BuscarCEP()
{
if (this.mkdCEP.MaskCompleted)
{
this.CEP(this.mkdCEP.Text);
this.txtNumeroRua.Focus();
}
else
{
MessageBox.Show([Ô]Informar CEP[Ô], [Ô]Aviso[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
// [ô][ô] <summary>
// [ô][ô] M�todo que retorna um endere�o com base no CEP (faz uma busca na internet)
// [ô][ô] </summary>
private void CEP(string pCEP)
{
DataSet ds=new DataSet();
string Resultado = String.Empty;
string[] DD = new string[4] ;
try
{
ds = new DataSet();
ds.ReadXml(([Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô]
+ (pCEP.Replace([Ô]-[Ô], [Ô][Ô]).Trim() + [Ô]&formato=xml[Ô])));
if (!(ds == null))
{
if ((ds.Tables[0].Rows.Count > 0))
{
Resultado = ds.Tables[0].Rows[0][[Ô]resultado[Ô]].ToString();
switch (Resultado)
{
case [Ô]1[Ô]:
// [ô]dtTable.Rows[i][[Ô]NoUsuario[Ô]].ToString());
DD[0] = ds.Tables[0].Rows[0][[Ô]uf[Ô]].ToString().Trim();
DD[1] = ds.Tables[0].Rows[0][[Ô]cidade[Ô]].ToString().Trim();
DD[2] = ds.Tables[0].Rows[0][[Ô]bairro[Ô]].ToString().Trim();
DD[3] = ds.Tables[0].Rows[0][[Ô]logradouro[Ô]].ToString().Trim();
break;
case [Ô]2[Ô]:
DD[0] = ds.Tables[0].Rows[0][[Ô]uf[Ô]].ToString().Trim();
DD[1] = ds.Tables[0].Rows[0][[Ô]cidade[Ô]].ToString().Trim();
DD[2] = String.Empty;
DD[3] = String.Empty;
break;
default:
DD[0] = String.Empty;
DD[1] = String.Empty;
DD[2] = String.Empty;
DD[3] = String.Empty;
break;
}
}
}
this.cboUF.Text = DD[0];
this.txtCidade.Text = DD[1];
this.txtBairro.Text = DD[2];
this.txtRua.Text = DD[3];
}
catch (Exception ex)
{
MessageBox.Show(([Ô]Falha ao Buscar o Cep[Ô] + ([Ô]
[Ô]
+ (ex.Message + ([Ô]
[Ô] + ex.Source)))));
}
}
private void BuscarCEP()
{
if (this.mkdCEP.MaskCompleted)
{
this.CEP(this.mkdCEP.Text);
this.txtNumeroRua.Focus();
}
else
{
MessageBox.Show([Ô]Informar CEP[Ô], [Ô]Aviso[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
// [ô][ô] <summary>
// [ô][ô] M�todo que retorna um endere�o com base no CEP (faz uma busca na internet)
// [ô][ô] </summary>
private void CEP(string pCEP)
{
DataSet ds=new DataSet();
string Resultado = String.Empty;
string[] DD = new string[4] ;
try
{
ds = new DataSet();
ds.ReadXml(([Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô]
+ (pCEP.Replace([Ô]-[Ô], [Ô][Ô]).Trim() + [Ô]&formato=xml[Ô])));
if (!(ds == null))
{
if ((ds.Tables[0].Rows.Count > 0))
{
Resultado = ds.Tables[0].Rows[0][[Ô]resultado[Ô]].ToString();
switch (Resultado)
{
case [Ô]1[Ô]:
// [ô]dtTable.Rows[i][[Ô]NoUsuario[Ô]].ToString());
DD[0] = ds.Tables[0].Rows[0][[Ô]uf[Ô]].ToString().Trim();
DD[1] = ds.Tables[0].Rows[0][[Ô]cidade[Ô]].ToString().Trim();
DD[2] = ds.Tables[0].Rows[0][[Ô]bairro[Ô]].ToString().Trim();
DD[3] = ds.Tables[0].Rows[0][[Ô]logradouro[Ô]].ToString().Trim();
break;
case [Ô]2[Ô]:
DD[0] = ds.Tables[0].Rows[0][[Ô]uf[Ô]].ToString().Trim();
DD[1] = ds.Tables[0].Rows[0][[Ô]cidade[Ô]].ToString().Trim();
DD[2] = String.Empty;
DD[3] = String.Empty;
break;
default:
DD[0] = String.Empty;
DD[1] = String.Empty;
DD[2] = String.Empty;
DD[3] = String.Empty;
break;
}
}
}
this.cboUF.Text = DD[0];
this.txtCidade.Text = DD[1];
this.txtBairro.Text = DD[2];
this.txtRua.Text = DD[3];
}
catch (Exception ex)
{
MessageBox.Show(([Ô]Falha ao Buscar o Cep[Ô] + ([Ô]
[Ô]
+ (ex.Message + ([Ô]
[Ô] + ex.Source)))));
}
}
Então, eu tentei utilizar o exemplo do site, porem da erro no ds.ReadXml
Citação:O tipo [Ô]XmlReader[Ô] está definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly [Ô]System.Xml, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e[Ô]
Tópico encerrado , respostas não são mais permitidas