Quiero hacer algunas llamadas a la API a un servidor mediante HttpURLConnection. Pero las peticiones no son exitosas, de vuelta:

<error>
  <http_status>400 Bad Request</http_status>
  <message>Unexpected request Content-Type header ''. Expecting 'application/x-www-form-urlencoded'.</message>
</error>

Así que me quieren ver lo que el «real» de contenido que se va a enviar al servidor. Por el contenido real me refiero a la exacta solicitud HTTP.

Alguna idea de cómo puedo ver esto?

Edición:
Basado en las primeras respuestas que aquí debo aclarar mi problema: quiero evitar el uso de un programa externo como HTTP sniffer o nada y tenía la esperanza de que hay una función o una propiedad o lo que sea que contiene la información que estoy buscando.

Si ese no es el caso, ¿alguien sabe si esta información puede ser de forma manual reconstruido (por ejemplo llamando a varias funciones como getRequestMethod(), etc.)

Estoy frente a este problema bastante a menudo, así que vale la pena el esfuerzo para construir la funcionalidad de mí mismo. Sólo necesita saber cómo 🙂

InformationsquelleAutor Hirnhamster | 2010-08-06

3 Comentarios

  1. 14

    Usted puede poner el HttpURLConnection en modo de depuración mediante la activación de java.registro con

    -Djava.util.logging.config.file=logging.properties

    y poner en el registro.propiedades (por defecto en JRE_HOME\lib) la siguiente propiedad

    sun.net.www.protocol.http.HttpURLConnection.level = ALL
    • Realmente no sé lo que tiene que ver con la línea de código que se mencionó anteriormente.. ¿donde tengo que poner esto? (utilizando como IDE eclipse)
    • También es necesario establecer «de java.util.la tala de árboles.ConsoleHandler.nivel = MEJORES»
    • en la carrera de Configuración – Argumentos de la ficha , se agrega a los argumentos de VM sección.
    • En mi caso no funciona 🙁 yo uso de java 8
    • ¿Cómo ves el contenido de la «real» de datos enviados?
    • Lo he probado en el JDK 7, y a mí me funcionó después de que he cambiado a sun.net.www.protocol.http.HttpURLConnection.level = FINEST

  2. 5

    tcpdump va a funcionar, pero puede ser difícil que es hacer lo que desea. NetCat es más amigable con el usuario (aquí está la página del proyecto: http://netcat.sourceforge.net/ – la mayoría de las plataformas Unix ya lo incluyen).

    nc -l 9999

    Esta escucha en el puerto TCP 9999, y cuando un cliente HTTP conecta, voy a imprimir el texto completo de la solicitud.

Dejar respuesta

Please enter your comment!
Please enter your name here