2011-05-09 22 views
10

Si utilizo un navegador para enviar información al servidor (por ejemplo, usando una página de inicio de sesión, contraseña), simplemente lleno el cuadro de texto del usuario y el cuadro de texto de contraseña y hago clic en el botón de inicio de sesión.¿Cómo enviar por programación una solicitud HTTP con parámetros?

Deseo enviar esta información pero sin tener que utilizar el navegador. Me gustaría 'llenar' los cuadros de texto, pero sin tener que hacerlo manualmente en el navegador. Puede estar usando un servlet.

Mi pregunta es: ¿Cómo enviar información en cuadros de texto, por ejemplo, a un sitio web, haciéndolo desde un Servlet?

+1

Ver: http://stackoverflow.com/questions/2793150/how-to-use-java-net-urlconnection-to-fire-and-handle-http-requests – BalusC

Respuesta

7

¿por qué no hacer una llamada a la URL de Java utilizando una URL como http://your.domain.name/your/servlet/path?userFieldName=THE_VALUE_YOU_WANT_TO_PASS&passwdFieldName=PASSWORD

El servlet se sentirá como los valores son procedentes de esas cajas.

O tal vez quiera sumergirse en Apache HTTP Client para imitar una solicitud enviada por un cliente.

uh..oh .. ¿estás haciendo pruebas funcionales? ¿Por qué no mirar en JMeter?


actualizaciones según comentario

lo que necesita saber what actually form submission does? Básicamente forma una cadena de consulta compuesta de clave-valor (KV) par.

Por lo tanto, si usted tiene un campo de texto llamado un tfield donde usuario ha escrito some text, y hay un menú desplegable llamado, donde ddfield usuario ha seleccionado optionX que tiene valor optionX-Val. Y esta forma se sometió a una URL, http://my.domain.name/my/servlet - el navegador enviará una petición que se verá como

http://my.domain.name/my/servlet?tfield=some%20text&ddfield=optionX-Val 

Si desea imitar envío del formulario, tendrá que crear manualmente una dirección URL que tiene una serie de petición que contiene todos los campos y sus valores como FIELD_NAME = ValorDelCampo par ordenado separados por ampersand (&)


ah, gran idea. Si usa Firebug (una extensión para Firefox), abra el panel NET en Firebug, realice una presentación manual del formulario que desea imitar. Consulte qué solicitud se publica cuando envió el formulario. Tendrá el formato de URL exacto que estás buscando. Copie esta URL, reemplace los valores y realice presentaciones falsas tanto como desee.

Espero que esto ayude.

+0

más probable solución –

+0

ok, esto es en caso de que tenga cuadros de texto, pero ¿qué pasa con listboxes? funciona de la misma manera? ¿O hay alguna diferencia? – fernandohur

+0

@pictureyournews actualizó la respuesta. – Nishant

1

un servlet se encarga del otro extremo: es básicamente un controlador para solicitudes http que vive dentro de un contenedor de servlet. Si te entiendo correctamente, quieres enviar una solicitud http. Puede hacerlo utilizando herramientas de línea de comandos como curl, o si desea permanecer dentro de Java, puede intentar this example on exampledepot. Use su motor de búsqueda favorito para buscar más ejemplos, p. con términos de búsqueda como "enviar solicitudes GET a través de una url".

En su situación, donde debe enviar información de nombre de usuario y contraseña, deberá mirar el html y encontrar la URL para el atributo del elemento action.Luego necesita encontrar los nombres de los campos de nombre de usuario y contraseña. Usando estos nombres como parámetros de url, puede construir una solicitud GET que imita el envío de un formulario.

NOTA: por lo general, almacenar una contraseña en texto sin formato en el código y/o enviarla en texto sin formato a un sitio web no es una buena opción.

1

No está claro para mí lo que realmente tramas. Supongo que el servlet será quien envíe los datos. Aquí algunos ejemplos.

Usando setAttribute luego reenviar la solicitud

//On your servlet 
request.setAttibute('user', 'admin'); 
request.setAttribute('password', '123'); 
getServletContext().getRequestDispatcher("page.jsp").forward(request, response); 

//On your jsp page get the value using EL 
<span>${user}</span> 

Usando sesión

//On your servlet 
HttpSession session = request.getSession(true); 
session.setAttribute('user', 'admin'); 
session.setAttribute('password', '123'); 
getServletContext().getRequestDispatcher("page.jsp").forward(request, response); 

//On your jsp page get the value using EL 
<span>${user}</span>  

El ejemplo anterior está destinado a trabajar dentro de la aplicación web. Para enviar información a otra aplicación web, que espera una solicitud. Vea la muestra a continuación.

//On your jsp or servlet, you can also do the same within web application 
request.sendRedirect('http://example.com?user=admin&password=123'); 

//on your jsp @example.com 
<span>${param.user}</span> 

Si esto no es lo que quiere decir, añadiendo más detalles será una ayuda.

0

Por si acaso alguien está interesado, hay un complemento para Firefox llamado Tamper de datos. Con él puede detener el envío de y la solicitud http y modificarlo. Le mostrará la "url" que necesita para enviar los parámetros, los valores que tienen actualmente y su nombre. Puede verificarlo here. Después de eso, puede usar un request.sendRedirect('url you got from Tamper Data');

Cuestiones relacionadas