Beiträge von theonlyhage

    Also, die URL die ich aufrufe, zeigt mir in einem Browser eingegeben direkt das entsprechende Dokument an. Es wird ja auch direkt die UID und OpenDocument aufgerufen. Klar steht vor dem JavaScriptcode noch ein wenig HTML:


    HTML
    <!-- (c) Copyright 1985-2007 IBM Corporation. All rights reserved. -->[\r][\n]"
    <!-- $HaikuForm - 211 -->[\r][\n]"
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> [\n]"
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />[\n]"
    <meta http-equiv="Content-Script-Type" content="text/javascript; charset=ISO-8859-1" />[\n]"
    <!-- Domino Release 8.0.1 (Windows NT/Intel) -->[\n]"
    <script type="text/javascript">...


    Den hielt ich aber eigentlich für überflüssig hier zu posten

    der Fehler kam wohl Zustande, weil ich versucht habe 2 verschiedene Urls über ein http-Client Objekt anzusprechen.


    Wenn ich jetzt via:

    Code
    CookieStore cs =  httpclient.getCookieStore();
    DefaultHttpClient httpclient2 = new DefaultHttpClient();
    httpclient2.setCookieStore(cs);


    die Cookies übergebe, bekomme ich wieder die Seite mit den JavaScriptfkt. und dem Platzhalter für den Content. Weiter bin ich also immer noch nicht.

    also die Log-Ausgaben die von
    httpclient.execute(httpget2);


    verursacht werden, zeigen mir das Cookie


    DomAuthSessId


    aber an. Was mir allerdings grade erst aufgefallen ist, mitten in den (ja doch sehr umfangreichen Log-Ausgaben gibt es eine Exception:

    Code
    org.apache.http.NoHttpResponseException: The target server failed to respond


    denke, da liegt das Problem an sich

    Den ganzen JavaScriptcode hier zu posten, würde den Rahmen sprengen, es beginnt mit:


    Code
    <script type="text/javascript">var h_PageUnid="6F4FFB21152828D7C125761C0032D516",h_PDCheck='<a href="/">x</a>',CcE=[4,1,1,1,1,1,0,1,1], haiku={aCompressible:'0,0,0,0'.split(',')}, s_FF='/iNotes/Forms8.nsf', s_FormsTLM='20090115T150350,33Z';</script>


    und dann folgende etliche Funktionen(DSn(), DeD(), Ctp(), KG(), ... ). Circa 26k Zeichen, deren Sinn sich mir wie gesagt nicht ergibt. Danach folgt ein

    Code
    <!-- Page contents -->


    gefolgt vom schliessenden Body- und HTML-Tag.


    Was die Authentifizierung angeht, ich dachte, wenn ich ein neues httpget im httpclient-Objekt ausführe, in dem ich vorher die Auth durchgeführt habe, würden die Cookies so oder so übernommen?!?
    (wie mache ich das denn sonst?)

    Ok, macht ja Sinn :)


    Habe daher jetzt die Verbindung mit dem Jakarta HTTP-Client aufgebaut. Dieser spricht in seinen Log-Ausgaben auch von einem Cookie:


    >> Cookie: DomAuthSessId=38A2841E6.....


    Trotzdem bekomme ich, wenn ich ein konkretes Dokument anfordere (nachdem ich mich authentifiziert habe), ein leeres Dokument zurück. Wobei "leer" heisst, es beinhaltet keinen Content. JavaScript Funktionen sind ohne Ende vorhanden, allerdings sehe ich den Sinn dieser nicht.

    hm, wenn ich mir den String folgendermaßen bastel:


    StringBuffer loginBuffer = new StringBuffer();
    loginBuffer.append("http://");
    loginBuffer.append(config.getNotesServer());
    loginBuffer.append("/names.nsf?");
    loginBuffer.append("Login&");
    loginBuffer.append("username=");
    loginBuffer.append(config.getNotesUser());
    loginBuffer.append("&password=");
    loginBuffer.append(config.getNotesPassword());
    String loginString = loginBuffer.toString();




    und dann zu der URL connecte:


    URL loginUrl = new URL(loginString);
    URLConnection loginConn = loginUrl.openConnection();
    loginConn.connect();


    bekomme ich zwar keinen Fehler, wenn ich allerdings danach ein


    dokument.getHttpUrl();


    versuche via URL zu öffnen, bekomme ich erneut nur die HTML-Seite mit der Loginform.


    edit: wenn ich die LoginParameter an die DokumentenUrl hänge, bekomme ich die DominoWebStartseite heraus (die, die auf die Helpfiles und ibm.com und lotus.com verlinkt). Muss ich das verstehen?


    edit2: das Prinzip funktioniert, also wenn ich die Urls per Hand in den Browser eingebe. Nur programmatisch will es nicht! Bekomme ich aber (hoffentlich) schon noch irgendwie hin. Besten Dank nochmal, das war echt schnelle und gute Hilfestellung!


    edit3: Kommando zurück, nur "selbstgebastelte" Urls "funktionieren". Urls die von dokument.getHttpUrl() kommen, zeigen nach wie vor die LoginMaske an! Wieso?

    Super, danke für die Infos. Habe die Einstellung an meinem Testsystem mal auf "Single Server" geändert, und siehe da, exakt das Verhalten, das auch die Produktivumgebung an den Tag legt.


    Wenn Du mir jetzt noch sagen könntest, wie die Struktur der URL aussehen muss, damit ich mich via dieser anmelden kann, wäre das ein Hit :)


    konkret sehen die Urls ja (in etwa) so aus:


    http://host/datenbank.nsf/viewid/dokumentid?OpenDocument


    kann ich den Login dann einfach in der Form "?Login=xxx?Password=abc" hinten dran hängen?

    Zunächst, Danke für die schnelle Antwort.


    Session Authentication ist auf meinem Testsystem in der Tat "disabled". Auf dem Produktivsystem kann ich das leider so schnell nicht nachprüfen, da ich hier keinen Zugang zum Administrator habe, es sei denn, man kann das irgendwie API-seitig prüfen.


    (was genau wird denn durch "Session Authentication" geregelt? heisst dass, dass ich immer eine Session (lotus.domino.Session) haben muss, um Zugriff zu bekommen?)


    Die Anmeldemaske ist ein Standardhtml-Formular mit zwei Textfeldern(User&PW) und einem Anmeldebutton, der auf die names.nsf verweist, und dann zum entsprechenden Dokument redirected.

    Hallo,
    ich versuche mich am HTTP-Task eines Domino8 via Java folgendermaßen zu authentifizieren:


    <div class="code">
    String httpUrl = memo.getHttpURL();
    Authenticator.setDefault(new MyAuthenticator(config.getNotesUser(), config.getNotesPassword()));
    URL url = new URL(httpUrl);
    URLConnection conn = url.openConnection();
    InputStream input = conn.getInputStream();
    conn.connect();
    </div>


    mit


    <div class="code">
    class MyAuthenticator extends Authenticator {
    String user = "";
    String password = "";
    MyAuthenticator(String u, String pw){
    user = u;
    password = pw;
    }
    public PasswordAuthentication getPasswordAuthentication() {
    return (new PasswordAuthentication(user, password.toCharArray()));
    }
    }
    </div>


    das ganze funktioniert auf meinem Testsystem auch wunderbar, am Produktivsystem scheitert aber die Anmeldung, so dass ich, wenn ich mir die HTML-Seite aus dem Inputstream holen will, nur eine Seite mit einem Formular zurückbekomme, dass mich zur Anmeldung auffordert. Benutzername und Passwort sind definitiv richtig. Muss ich noch irgendwelche Einstellungen beachten, die evtl. genau mein Vorhaben verbieten, oder was mache ich falsch?

    Hallo,


    ich exportiere ein Notesdokument um es ausserhalb von Notes als HTML-Dokument darzustellen (via Java):


    Code
    dxlExporter = session.createDxlExporter();dxlExporter.setConvertNotesBitmapsToGIF(true);String dxl = dxlExporter.exportDxl(doc);


    soweit so gut. Den dxl-Text wandel ich via xsl nach Html. Klappt auch wunderbar. ABER:


    sobald Bilder in dem Notesdokument vorkommen, werden diese von dem Exporter in


    Code
    <picture>   <notesbitmap>       somebase64code   </notesbitmap></picture>


    gewandelt. Das ganze passiert obwohl ich setConvertNotesBitmapsToGIF(true) gesetzt habe. Rauskommen sollte eigentlich sowas wie:

    Code
    <gif orignalformat='notesbitmap'>gif representation in base64
    </gif>


    Kann mir jemand sagen, woran es liegen könnte, dass die Konvertierung nicht funktioniert?


    (das ganze passiert auf einem Domino 8.0)


    Gruß,
    theonlyhage