Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tiagoborges.net

Microsoft.XMLHTTP retorna erro em acento.

Recommended Posts

Tenho um formulário que busca CEP em uma outra página, como posso fazer para corrigir os acentos retornados, exemplo 72255604?

Protected Sub bBuscar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bBuscar.Click
		If tbCEP.Text <> "" Then
			'Buscar o conteudo
			Dim vCEP As Integer = tbCEP.Text
			Dim vXMLHttpRequest = CreateObject("Microsoft.XMLHTTP")
			vXMLHttpRequest.Open("GET", "http://republicavirtual.com.br/web_cep.php?cep=" & vCEP & "&formato=query_string", False)
			vXMLHttpRequest.send()
			'Resultado da busca 
			Dim vResultadoTemporario As String = vXMLHttpRequest.ResponseText
			vXMLHttpRequest = Nothing

			'Busca o conteudo via Xml Http Request
			Dim vXMLHttpRequestResultado As Array = vResultadoTemporario.Split("&")
			Dim vSplit(7, 1) As String
			Dim vTemporario As Array
			'Montando parametros
			For vXyz = 1 To UBound(vXMLHttpRequestResultado)
				vTemporario = vXMLHttpRequestResultado(vXyz).Split("=")
				vSplit(vXyz, 0) = vTemporario(0)
				vSplit(vXyz, 1) = vTemporario(1).ToString.Replace("+", " ")
			Next
			'Montando resposta
			Select Case vSplit(1, 1)
				'Caso o resultado seja completo 
				Case "1"
					vResultado &= "	  <h2>Cidade com logradouro completo</h2> " & vbCrLf & _
					"	  <b>Tipo de Logradouro: </b> " & vSplit(6, 1) & "<br/>" & vbCrLf & _
					"	  <b>Logradouro: </b> " & vSplit(7, 1) & "<br/>" & vbCrLf & _
					"	  <b>Bairro: </b> " & vSplit(5, 1) & "<br/>" & vbCrLf & _
					"	  <b>Cidade: </b> " & vSplit(4, 1) & "<br/>" & vbCrLf & _
					"	  <b>UF: </b> " & vSplit(3, 1) & "<br/>" & vbCrLf & _
					"	  <b>Cep: </b> " & vCEP & vbCrLf
					'Caso o resultado unico
				Case "2"
					vResultado &= "	  <h2>Cidade com logradouro ú</h2> " & vbCrLf & _
					"	  <b>Cidade: </b> " & vSplit(4, 1) & "<br/>" & vbCrLf & _
					"	  <b>UF: </b> " & vSplit(3, 1) & "<br/>" & vbCrLf & _
					"	  <b>Cep: </b> " & vCEP & vbCrLf
					'Caso nao seja encontrado
				Case Else
					vResultado &= "	  <h2>Resultado não encontrado</h2> " & vbCrLf & _
					"	  <b>Cep: </b> " & vCEP & vbCrLf
			End Select
		End If
	End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Recomendo você não utilizar o Microsoft.XMLHTTP. O ramework .net possui a classe HttpWebRequest que é nativo e tem solução para esse problema.

Um exemplo http://wiki.asp.net/page.aspx/285/httpwebrequest/

 

Se mesmo assim você quer continuar utilizando, procure nos fóruns de ajax, pois esse mesmo código é utilizado no ajax.

 

Espero ter ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Migrei e mesmo assim continuou sem conseguir resolver:

 

If tbCEP.Text <> "" Then
			'Buscar o conteudo
			Dim vCEP As Integer = tbCEP.Text
			'Request
			Dim vWebRequest As HttpWebRequest = CType(WebRequest.Create("http://republicavirtual.com.br/web_cep.php?cep=" & vCEP & "&formato=query_string"), HttpWebRequest)
			Dim vWebResponse As HttpWebResponse = CType(vWebRequest.GetResponse(), HttpWebResponse)
			Dim vStreamReader As New StreamReader(vWebResponse.GetResponseStream(), Encoding.UTF8)
			Dim vResultadoTemporario As String = vStreamReader.ReadToEnd()
			'Montando parametros
			Dim vXMLHttpRequestResultado As Array = vResultadoTemporario.Split("&")
			Dim vSplit(7, 1) As String
			Dim vTemporario As Array
			'Montando parametros
			For vXyz = 1 To UBound(vXMLHttpRequestResultado)
				vTemporario = vXMLHttpRequestResultado(vXyz).Split("=")
				vSplit(vXyz, 0) = vTemporario(0)
				vSplit(vXyz, 1) = vTemporario(1).ToString.Replace("+", " ")
			Next
			vStreamReader.Close()

			'Montando resposta
			Select Case vSplit(1, 1)
				'Caso o resultado seja completo 
				Case "1"
					vResultado &= "	  <h2>Cidade com logradouro completo</h2> " & vbCrLf & _
					"	  <b>Tipo de Logradouro: </b> " & vSplit(6, 1) & "<br/>" & vbCrLf & _
					"	  <b>Logradouro: </b> " & vSplit(7, 1) & "<br/>" & vbCrLf & _
					"	  <b>Bairro: </b> " & vSplit(5, 1) & "<br/>" & vbCrLf & _
					"	  <b>Cidade: </b> " & vSplit(4, 1) & "<br/>" & vbCrLf & _
					"	  <b>UF: </b> " & vSplit(3, 1) & "<br/>" & vbCrLf & _
					"	  <b>Cep: </b> " & vCEP & vbCrLf
					'Caso o resultado unico
				Case "2"
					vResultado &= "	  <h2>Cidade com logradouro ú</h2> " & vbCrLf & _
					"	  <b>Cidade: </b> " & vSplit(4, 1) & "<br/>" & vbCrLf & _
					"	  <b>UF: </b> " & vSplit(3, 1) & "<br/>" & vbCrLf & _
					"	  <b>Cep: </b> " & vCEP & vbCrLf
					'Caso nao seja encontrado
				Case Else
					vResultado &= "	  <h2>Resultado não encontrado</h2> " & vbCrLf & _
					"	  <b>Cep: </b> " & vCEP & vbCrLf
			End Select
		End If
Se fosse em ASP era só ultilida:

 

'Função fix Acentuação PT-BR
	Protected Function fncFixAcento(ByVal sDec As String) As String
		Dim objRE = New RegularExpressions.Regex
		sDec = Replace(sDec, "+", " ")
		objRE.Pattern = "%([0-9a-fA-F]{2})"
		objRE.Global = True
		fncFixAcento = objRE.Replace(sDec, GetRef("fncFixAcentoHex"))
	End Function
	'	'Função fix Acentuação PT-BR
	Protected Function fncFixAcentoHex(ByVal sMatch, ByVal lhex_digits, ByVal lpos, ByVal ssource)
		fncFixAcentoHex = Chr("&H" & lhex_digits)
	End Function

Como converter para ASPX.VB?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta usar outro encode, tipo esse:

Dim vStreamReader As New StreamReader(vWebResponse.GetResponseStream(), Encoding.GetEncoding(1252))

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.