Estoy intentando escribir una biblioteca que accede a un servicio web RESTful utilizando la API de Jersey Client. El servicio requiere una solicitud de inicio de sesión que establece una cookie, luego las solicitudes posteriores deben tener esa cookie configurada para tener éxito. La solicitud de inicio de sesión funciona como se esperaba, y puedo recuperar la cookie en la respuesta desde el inicio de sesión, pero parece que no puedo volver a agregar la cookie en las solicitudes posteriores. ¿Alguien puede decir lo que podría estar haciendo mal? Aquí está el código que realiza la solicitud:Jersey Client: Agregar cookies a la solicitud
MultivaluedMap<String,String> qs = new MultivaluedMapImpl();
qs.add("xml", this.toXmlString());
WebResource wr = client.resource(Constants.ServiceURL);
if (CookieJar.Cookies != null)
{
for (NewCookie c : CookieJar.Cookies)
{
logger.debug("Setting cookie " + c.getName());
wr.cookie(c);
}
}
ClientResponse response = wr.queryParams(qs).get(ClientResponse.class);
Mientras que la solicitud no falla, el servicio responde con el error de aplicación "Sin Sesión". Aquí está el registro de seguimiento de la secuencia de solicitud:
Jul 15, 2011 5:20:33 PM com.sun.jersey.api.client.filter.LoggingFilter log
INFO: 1 * Client out-bound request
1 > GET https://www.company.com/TrackerXMLInterface.asp?xml=%3Cxml%3E%3CTRANTYPE%3ELOGIN%3C/TRANTYPE%3E%3CTRANPARMS%3E%3CLOGINID%3Emylogin%3C/LOGINID%3E%3CPASSPHRASE%3EBa1b2c3%3C/PASSPHRASE%3E%3C/TRANPARMS%3E%3C/xml%3E
Jul 15, 2011 5:20:35 PM com.sun.jersey.api.client.filter.LoggingFilter log
INFO: 1 * Client in-bound response
1 < 200
1 < Date: Fri, 15 Jul 2011 22:20:35 GMT
1 < Content-Length: 150
1 < Set-Cookie: ASPSESSIONIDSUBSBSRR=GBGOKGJDAAHCNDDHPBFICFIH; secure; path=/
1 < Content-Type: text/html
1 < Server: Microsoft-IIS/7.0
1 < X-Powered-By: ASP.NET
1 < Cache-Control: private
1 <
<XML><TRANRESULTS><TRANRETURNCODE>L00</TRANRETURNCODE><TRANRETURNMSG>Valid Login </TRANRETURNMSG><TRANDETAIL></TRANDETAIL></TRANRESULTS></XML>
[continued below]
Estoy pensando en la siguiente petición debe tener las cookies en la cabecera:
Jul 15, 2011 5:20:35 PM com.sun.jersey.api.client.filter.LoggingFilter log
INFO: 1 * Client out-bound request
1 > GET https://www.company.com/TrackerXMLInterface.asp?xml=%3Cxml%3E%3CTRANTYPE%3ESSNLAST%3C/TRANTYPE%3E%3CTRANPARMS%3E%3CSSN%3E123456789%3C/SSN%3E%3CLASTNAME%3ESchmoe%3C/LASTNAME%3E%3C/TRANPARMS%3E%3C/xml%3E
Jul 15, 2011 5:20:35 PM com.sun.jersey.api.client.filter.LoggingFilter log
INFO: 1 * Client in-bound response
1 < 200
1 < Date: Fri, 15 Jul 2011 22:20:35 GMT
1 < Content-Length: 150
1 < Set-Cookie: ASPSESSIONIDSUBSBSRR=HBGOKGJDIAPBBEIGLOILDJDN; secure; path=/
1 < Content-Type: text/html
1 < Server: Microsoft-IIS/7.0
1 < X-Powered-By: ASP.NET
1 < Cache-Control: private
1 <
<XML><TRANRESULTS><TRANRETURNCODE>R04</TRANRETURNCODE><TRANRETURNMSG>No Session </TRANRETURNMSG><TRANDETAIL></TRANDETAIL></TRANRESULTS></XML>
Cualquier orientación al respecto es muy apreciada.
salvó mis pruebas, gracias –
no funcionó para mí, incluso después de la fijación –