Взаимодействие с Lotus Connections

Мне нужно получить данные с какого-то сайта подключения к лотосу, например статус пользователя, с другого сайта. Я пытаюсь установить соединение с лотосом через java, например.

> 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]);

Но я всегда получаю ответ: HTTP/1.1 401 Unauthorized Пожалуйста, дайте мне какие-либо предложения?


person user341203    schedule 08.10.2010    source источник


Ответы (2)


Я решил проблему аутентификации следующим образом:

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;
}
person Matteo    schedule 04.05.2011

Вы не упоминаете, как вы аутентифицируетесь, что очень важно. Как следует из ошибки 401, Connections не рассматривает ваш запрос как аутентифицированный. Вам нужен действующий экземпляр Authenticator, но ваш фрагмент кода предполагает, что вы этого не сделаете, верно?

(Кроме того, при работе с API Lotus Connections рекомендуется использовать проект Apache Abdera).

person Ben    schedule 28.01.2011