none
Enviar datos con codificación ISO 8859 1 RRS feed

  • Pregunta

  • Hola:

    Tengo el siguiente código para enviar datos a un WebServicio (a una 3era empresa)

    El problema está en que debo enviar el mensaje con codificación ISO 8859 1, y me funciona bien, excepto cuando el string tiene el carácter + Cuando hay este carácter simplemente lo ignora y se pone un espacio.

    Por ejemplo

    envío este mensaje: 12+12
    pero se recibe esto: 12 12
    si pongo un punto de debugueo, veo que el string codificado es así: 12%2b12

    Alguna idea de qué debería modificar en el siguiente código?

      Dim baseurl As String
                    baseurl = "http://www.my-wbsite.es/service_http.php"
                    client = New WebClient
                   client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
                client.QueryString.Add("usuario", user)
                    client.QueryString.Add("password", pass)
                    client.QueryString.Add("customer", vCustomer)
                    sms = Me.textbox.Text
                    sms = System.Web.HttpUtility.UrlEncode(sms , System.Text.Encoding.GetEncoding("ISO-8859-1"))   
                    client.QueryString.Add("message", sms)
                    data = client.OpenRead(baseurl)
                    reader = New StreamReader(data)
                    s = reader.ReadToEnd()
                    data.Close()
                    reader.Close()  


    Regards, manolitos
    • Cambiado Enrique M. Montejo viernes, 1 de julio de 2011 17:50 desarrollo web (De:Lenguaje VB.NET)
    sábado, 5 de diciembre de 2009 17:45

Todas las respuestas

  • hola

    bien primero vale aclarar que no es un servicio web el que estas invocando, es simplemente una pagina PHP, a la cual le pasas parametrs en la url, mendiante el QueryString

    ahora bien sabes si la apgina al interpretar la informacion esta realizando en el decode, claculo que si lo haces pero solo para verificar

    - este problema solo aparece con este caracter o hay otros que sucede lo mismo ?
    URL Encoding

    - no has probado enviando la url con otro tipo de Encoding, o por ahi haciandolo sin especificar uno determinado

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 5 de diciembre de 2009 18:53
  • Lo de servicio web, no me refería a un webservice, no me xpliqué bien...Me refiero a un servicio web que ofrece una empresa (no webservice). que para obtener el servicio, debo pasar datos a esa url.....

    Al grano:

    Por lo que he testeado sólo pasa con ese carácter, el signo más +

    Según indicaciones de la Empresa, debe ser enviado expresamente con esa codificación. Ya he probado de otras y no funciona. He probado bastantes códigos, pero la cosa no andaba bien. El que mejor mejor funciona es ese código que he puesto en el ejemplo. Esa codificación va bien excepto el carácter +

    Con la página que me has pasado, he probado codificar, y sí, en la web esa me devuelve correctamente el string original a partir del codificado...Es decir que el string codificado está correcto. ¿pues dónde se marea ?


    un saludo
    Regards, manolitos
    domingo, 6 de diciembre de 2009 11:22
  • hola


    tienes contacto con la emprsa que desarrollo el servicio que estas queriendo invocar?

    si es aso ojo que no extrañaria que por ahi el "+" lo este usando para alguna otra operacion, o por ahi internamente en el codigo del servicio quite los +, pero sea algo que la logica del servicio realice

    por ahi si tienes contacto podrias preguntarlo, o si te pueen enviar como pasar un + en la url

    lo planteo porque si es el unico signo que trae problemas por ahi hay algo que se escapo documentar del funcionamiento de la pagina y hay signos que son quitado, por ahi por temas de seguridad, quizas.

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 6 de diciembre de 2009 14:24
  • Hola

    no, no es problema de ellos, el signo + puede ser enviador. hay empresas que lo usan, pero con distinto lenguaje JAVA, PHP...y funciona bien.

    Es decir, por ejemplo,  si yo utilizo su aplicación PHP funciona bien. O sea, que el problema es que no se está codificando correctamente en VB.NET

    En PHP la codificación simplemente es esto:

    $texto=urlencode($textoOriginal);
    


    Regards, manolitos
    domingo, 6 de diciembre de 2009 18:07