Java Client Example: Authentication Using HTTP Cookies (On-Premises Only)

The following code snippets show how to use CXF generated Java client stubs to obtain and use a cookie to manage your P6 EPPM Web Services session:

Step one: Create the Authentication stub

For example:

URL wsdlURL = new URL("http://serverName:portNumber/p6ws/services/AuthenticationService?wsdl");

AuthenticationService service = new AuthenticationService(wsdlURL);

AuthenticationServicePortType servicePort = service.getAuthenticationServiceSOAP12PortHttp();

BindingProvider bp = (BindingProvider)servicePort;

Step two: Invoke the Login operation

For example:

Boolean success = servicePort.login(userName, password, 1, true);

If the Login operation is successful, it sends an XML message similar to the following:

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Set-Cookie: JSESSIONID=6FBA83AE67D2E057CEC45B05A0414DB2; Path=/p6ws

Accept: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

Content-Type: text/xml;charset=utf-8

Content-Length: 254

Date: Thu, 03 Apr 2008 16:04:25 GMT

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><LoginReturn xmlns="http://xmlns.oracle.com/Primavera/P6/WS/Authentication/V1"><return>true</return></LoginReturn></SOAP-ENV:Body></SOAP-ENV:Envelope>

Step three: Retrieve the cookie from the response message

For example:

private static List<String> cookieHeaders = null;

Map<String, List<String>> responseHeaders = (Map<String, List<String>>)responseContext.get("javax.xml.ws.http.response.headers");

cookieHeaders = responseHeaders.get("Set-Cookie");

Step four: Use the cookie in all subsequent calls to P6 EPPM Web Services in current session  

For example:

Map<String, List<String>> headers = (Map<String, List<String>>)bp.getRequestContext().get("javax.xml.ws.http.request.headers");

if (headers == null)

{

  headers = new HashMap<String, List<String>>();

  bp.getRequestContext().put("javax.xml.ws.http.request.headers", headers);

}

headers.put("cookie", cookieHeaders);



Last Published Thursday, May 2, 2024