2010-10-08 7 views
0

Je dois obtenir les données d'un site de connexion Lotus, par exemple le statut de l'utilisateur, à partir de l'autre site. J'essaie de configurer une connexion avec Lotus via Java, par exemple.Interaction avec Lotus Connections

> server = "https://" + path + param + "&format=full"; 
> URL profiles_url = new URL(server); 
> // Open the URL: throws exception if not found 
> HttpURLConnection profiles_conn = HttpURLConnection)profiles_url.openConnection(); 
> profiles_conn.connect(); 
> // Process the Atom feed in the response content 
> readResponse(profiles_url.openStream(),args[0]); 

Mais je reçois toujours la réponse: HTTP/1.1 401 Unauthorized S'il vous plaît me donner des suggestions?

Répondre

0

Vous ne mentionnez pas comment vous vous authentifiez, ce qui est crucial. Comme l'indique l'erreur 401, Connections ne traite pas votre demande comme authentifiée. Vous avez besoin d'une instance Authenticator valide, mais votre extrait de code suggère que vous ne l'avez pas fait, n'est-ce pas? (En aparté, le projet Apache Abdera est recommandé pour travailler avec l'API Lotus Connections).

1

J'ai résolu le problème d'authentification de cette façon:

protected void doView(RenderRequest rRequest, RenderResponse rResponse) throws PortletException, IOException, UnavailableException { 
try { 
rResponse.setContentType("text/html");   
     URL url = new URL(
       "https://xxx/activities/service/atom2/todos"); 
     URLConnection con = url.openConnection(); 
     con.setConnectTimeout(150000); 
     con.setReadTimeout(150000); 
     writeCookies(con, rRequest);       

     DO_SOMETHING (con.getInputStream()); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
}  


private String doesLTPATokenCookieExists(RenderRequest request) { 
Cookie[] cookie = request.getCookies(); 
for (int i = 0; i < cookie.length; i++) { 
    System.out.println("Cookie Name " + cookie[i].getName()); 
    if (cookie[i].getName().equals("LtpaToken")) 
     return cookie[i].getValue(); 
} 
return null; 
} 

public URLConnection writeCookies(URLConnection urlConn, 
    RenderRequest request) { 
String cookieString = ""; 
cookieString += "LtpaToken" + "=" + doesLTPATokenCookieExists(request) + "; "; 
urlConn.setRequestProperty("Cookie", cookieString);  
return urlConn; 
}