usar peticiones peticion metodos httppost example ejemplos ejemplo cuando http rest http-headers

peticiones - Detectando la codificación de caracteres de una solicitud HTTP POST



peticiones http java (3)

El Charset utilizado en el POST coincidirá con el Charset especificado en el HTML que aloja el formulario. Por lo tanto, si su formulario se envía utilizando la codificación UTF-8 que es la codificación utilizada para el contenido publicado. La codificación URL se aplica después de que los valores se convierten al conjunto de octetos para la codificación de caracteres.

Estoy construyendo un servicio web y tengo un nodo que acepta un POST para crear un nuevo recurso. El recurso espera uno de dos tipos de contenido: un formato XML que definiré o variables codificadas por formulario.

La idea es que las aplicaciones que consumen pueden PUBLICAR XML directamente y beneficiarse de una mejor validación, etc., pero también hay una interfaz HTML que PUBLICARÁ el material codificado en el formulario. Obviamente, el formato XML tiene una declaración de juego de caracteres, pero no puedo ver cómo detecto el conjunto de caracteres del formulario simplemente al mirar el POST.

Una publicación típica en el formulario de Firefox se ve así:

POST /path HTTP/1.1 Host: www.myhostname.com User-Agent: Mozilla/5.0 [...etc...] Accept: text/html,application/xhtml+xml, [...etc...] Accept-Language: en-gb,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 41 field1=value1&field2=value2&field3=value3

Lo cual no parece contener ninguna indicación útil del juego de caracteres.

Según lo que puedo ver, el tipo application / x-www-form-urlencoded está completamente definido en HTML, que solo establece las reglas de codificación%, pero no dice nada sobre en qué juego de caracteres deberían estar los datos.

Básicamente, ¿hay alguna forma de decirle al conjunto de caracteres si no sé cuál es el juego de caracteres que se presentó originalmente en HTML? De lo contrario, tendré que tratar de adivinar el juego de caracteres en función de qué caracteres están presentes, y eso siempre es un poco dudoso por lo que puedo decir.


Intenta configurar el juego de caracteres en tu tipo de contenido:

httpCon.setRequestProperty( "Content-Type", "multipart/form-data; charset=UTF-8; boundary=" + boundary );


la codificación predeterminada de un HTTP POST es ISO-8859-1.

De lo contrario, tienes que mirar el encabezado Content-Type que luego se verá

Content-Type: application/x-www-form-urlencoded ; charset=UTF-8

Tal vez puedas declarar tu formulario con

<form enctype="application/x-www-form-urlencoded;charset=UTF-8">

o

<form accept-charset="UTF-8">

forzar la codificación

Algunas referencias:

http://www.htmlhelp.com/reference/html40/forms/form.html

http://www.w3schools.com/tags/tag_form.asp