0

他のサイトから、ユーザーのステータスなど、ロータス接続サイトからデータを取得する必要があります。たとえば、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 提案をお願いします。

4

2 に答える 2

1

この方法で認証の問題を解決しました:

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;
}
于 2011-05-04T14:55:49.247 に答える
0

認証方法については言及していませんが、これは非常に重要です。401 エラーが示すように、Connections はリクエストを認証済みとして処理していません。そこに有効なインスタンスが必要ですAuthenticatorが、コード スニペットはそれがうまくいかないことを示していますよね?

(余談ですが、Lotus Connections API を使用する場合は、Apache Abderaプロジェクトをお勧めします)。

于 2011-01-28T18:01:20.530 に答える