example post https jmeter jsessionid

post - example - jmeter cookies



jmeter-solicitud de la segunda publicaciĆ³n no utiliza el JSESSIONID creado en mi log in post solicitud (2)

Pude enviar con éxito una solicitud POST para mi log en el punto final y se creó un JSESSIONID. Sé que JSESSIONID está guardado por el Administrador de cookies HTTP que tengo en la parte superior de mi hilo porque veo que se usa en varias solicitudes GET que tengo en mi hilo.

Pero cuando intento una solicitud POST, no usa JSESSIONID y crea su propia ID. A continuación están mis configuraciones:

Protocolo: https Método: POST -Use KeppAlive {"json": "params"}

Resultado de la muestra: Nombre del hilo: sim test 1-1 Inicio de muestra: 2014-02-18 15:42:42 EST Tiempo de carga: 95 Latencia: 95 Tamaño en bytes: 239 Tamaño de encabezados en bytes: 239 Tamaño del cuerpo en bytes: 0 Muestra Recuento: 1 Recuento de errores: 0 Código de respuesta: 302 Mensaje de respuesta: encontrado

Cabeceras de respuesta: HTTP / 1.1 302 Servidor encontrado: Apache-Coyote / 1.1 Set-Cookie: JSESSIONID = F16BF82FD28A84F6E28DDE30DECDC48C; Ruta = /; Seguro; Ubicación HttpOnly: https: //api.zzzz com / site / needsAuth Content-Length: 0 Fecha: mar, 18 feb. 2014 20:42:42 GMT

Campos HTTPSampleResult: ContentType: DataEncoding: null

Solicitud: POST https: //api.zzz com / rest / members / 347 / pasajeros

Datos de POST: {"relationshipToMember": null, "authorizedToBook": falso, "authorizedToFly": true, "authorizedToGetInfo": falso, "pasajero": {"firstName": "Mighty", "middleName": null, "lastName" : "Max", "dateOfBirth": 1380857200000}}

[no galletas]

Encabezados de solicitud: Conexión: keep-alive Tipo de contenido: application / json Content-Length: 204 Host: api.zzz.com User-Agent: Apache-HttpClient / 4.2.6 (java 1.5)

-Nota: No sé si estoy haciendo mis solicitudes GET correctamente, pero están funcionando. Han seguido los redireccionamientos y primero va a http: //api.zzz ... - 302 encontrado, luego va https: //api.zzz ...

editar: Encontré esto, que es exactamente mi problema: el Administrador de cookies de Apache JMeter no agrega la cookie a la solicitud POST , pero no entiendo su solución si alguien puede explicar los pasos.

ACTUALIZACIÓN Resuelto: tuve que mantener el mismo nombre de servidor como mi POST de inicio de sesión y cambiar mi ruta


Tenía que mantener el mismo nombre / IP del servidor como mi POST de inicio de sesión y cambiar mi ruta


¡¡¡ACTUALIZAR!!!

No he notado su protocolo https .

Todo lo que necesita es establecer la propiedad CookieManager.save.cookies=true en su archivo jmeter.properties o agregarla como argumento a la línea de comando de JMeter como

jmeter -JCookieManager.save.cookies=true -n -t path_to_jmx_script.jmx -l path_to_log_file.jtl

Dejando el resto de mi respuesta solo en caso de que alguien más lo necesite como una guía sobre cómo compartir las cookies de JMeter en diferentes grupos de subprocesos.

No puedo reproducir su caso de uso en mi entorno con los siguientes escenarios:

  • El Administrador de cookies HTTP vive bajo el Plan de prueba (el mismo nivel que el (los) grupo (s) de subprocesos)
  • El Administrador de cookies HTTP vive en el Grupo de subprocesos (el mismo nivel que los Samplers)

Solo es reproducible si el Administrador de cookies HTTP se agregó como elemento secundario de la solicitud de inicio de sesión. Si es tu caso, sube un nivel para ampliar su alcance.

Si por alguna razón no ayuda, consulte a continuación los posibles detalles de la solución.

Su código de respuesta 204 no me parece un error. Supongo que el servidor preferiría responder con algo como 401 o 403 si hubiera problemas con la autenticación basada en cookies.

Si explícitamente necesita establecer una cookie, puede hacerlo a través de, por ejemplo, Beanshell

Debes hacer lo siguiente:

  1. Si va a compartir cookies entre diferentes grupos de subprocesos o los necesita como variables de JMeter por cualquier otro motivo, establezca la propiedad CookieManager.save.cookies=true en el archivo jmeter.properties o especifíquelo durante el inicio de JMeter como jmeter -JCookieManager.save.cookies=true
  2. Agregue Beanshell Post Processor a su solicitud de inicio de sesión con el siguiente código:

    import org.apache.jmeter.protocol.http.control.CookieManager; CookieManager manager = ctx.getCurrentSampler().getProperty("HTTPSampler.cookie_manager").getObjectValue(); props.put("cookiecount", String.valueOf(manager.getCookieCount())); for (int i = 0; i < manager.getCookieCount(); i++) { props.put("cookie_name" + i, manager.get(i).getName()); props.put("cookie_value" + i, manager.get(i).getValue()); props.put("cookie_domain" + i, manager.get(i).getDomain()); props.put("cookie_path" + i, manager.get(i).getPath()); props.put("cookie_expires" + i, String.valueOf(manager.get(i).getExpires())); props.put("cookie_secure" + i, String.valueOf(manager.get(i).getSecure())); }

  3. Agregue el procesador Beanshell Pre a su solicitud POST con el siguiente código:

    import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.control.Cookie; import org.apache.jmeter.testelement.property.JMeterProperty; CookieManager manager = ctx.getCurrentSampler().getProperty("HTTPSampler.cookie_manager").getObjectValue(); int count = Integer.parseInt(props.getProperty("cookiecount")); for (int i = 0; i < count; i++) { Cookie cookie = new Cookie(props.getProperty("cookie_name" + i), props.getProperty("cookie_value" + i), props.getProperty("cookie_domain" + i), props.getProperty("cookie_path" + i), Boolean.parseBoolean(props.getProperty("cookie_secure" + i)), Long.parseLong(props.getProperty("cookie_expires" + i))); manager.add(cookie); } JMeterProperty cookieprop = ctx.getCurrentSampler().getProperty("HTTPSampler.cookie_manager"); cookieprop.setObjectValue(manager); ctx.getCurrentSampler().setProperty(cookieprop);

Explicación:

El código en el punto 2 obtiene todas las cookies disponibles del Administrador de cookies HTTP y las almacena en Propiedades de JMeter con el prefijo cookie_

El código en el punto 3 lee todas las propiedades con el prefijo cookie_ , construye Cookies JMeter a partir de ellas y las agrega al Administrador de cookies HTTP.

Consulte Cómo utilizar la guía de BeanShell para obtener más información sobre la extensión de JMeter a través de scripts.