Вывод полей документа в браузере по запросу URL

Тема в разделе "Lotus - Программирование", создана пользователем deeeman, 20 июл 2016.

Метки:
  1. deeeman

    deeeman Well-Known Member

    Регистрация:
    4 дек 2007
    Сообщения:
    382
    Симпатии:
    0
    Всем привет!

    Задача: вывести в xml формате поля документа в браузер по запросу URL
    например такой url: http://server/db.nsf/DocExporter?OpenAgent&unid=FCB20938CED3D62143257D2E00417679

    Пишем обычный агент который ловит url парсит его, вытягивает UNID, находим док и выводим все поля в виде xml в браузер (НЕ В ФАЙЛ!)

    Агент такой:
    Код (Text):
    Set session = New NotesSession
        Dim cdoc As NotesDocument
        Dim unid As String, params As String
        Dim db As NotesDatabase
        Dim doc As NotesDocument
       
        Set db= session.CurrentDatabase
        Set cdoc = session.DocumentContext
        params = cdoc.Query_String_Decoded(0)
       
        unid = GetParam(params, "unid")
       
        Set doc = getDocByUNID(db,unid)
        If Not doc Is Nothing Then
            Print {<?xml version="1.0" encoding="UTF-8"?>}
            Print {<entities>}
            Print {<entity unid="} & doc.UniversalID & {">}
            Forall i In doc.Items
                Print {<} & Cstr(i.name) & {>} & doc.GetItemValue(i.name)(0) & {</} & Cstr(i.name) & {>}
            End Forall
            Print "</entity>"
            Print "</entities>"      
        End If    
    Но ерунда в том что в браузере тэги не отображаются,
    исходный код страницы содержит лишнее,
    т.е. агент сам добавляет стандартную обертку для html страницы:

    Код (Text):
    <html>
    <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">      
    </head>
    <body text="#000000">
    ..........мой xml............
    </body>
    </html>
     
    Что можно придумать чтобы выводил в формате xml
    как по ссылке:
    http://www.w3schools.com/xml/note.xml
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    deeeman нравится это.
  3. deeeman

    deeeman Well-Known Member

    Регистрация:
    4 дек 2007
    Сообщения:
    382
    Симпатии:
    0
    То что надо! Спасибо!
    так же, если у вас есть значения полей на русском, то не забыть про кодировку, а то xml ломается:
    Код (Text):
       
    Print {Content-type: text/html; charset="windows-1251"}
    Print {<?xml version="1.0" encoding="windows-1251"?>}
     
     
  4. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    у меня UTF-16 прекрасно срабатывает вместо win-1251.
    с win1251 есть проблемы на иностранных ос
     
  5. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    задача почти такая же но посложнее
    1) агент генерирует имя файла
    2)по подобной ссылке должен скачиваться файл (XML)
     
  6. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    А проблема-то в чём? п.1 или п.2 не получается?
    Агент генерит нужный файл,сохраняет его на диске, а в консоль (Print) выводит ссылку на него см. https://en.wikipedia.org/wiki/URL_redirection
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    если файл небольшой можно и стрим отдать http://vitalisks.blogspot.ru/2010/09/using-xpages-to-pass-back-binary-data.html
    в обычных агентах шитхеппенс (как у ИБМ часто бывает) ;) http://lekkimworld.com/mView.action?entry=1131806604253
    т.е. гранаты не той системы
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    а вот это - принтуй прям в поток
    http://stackoverflow.com/a/2965701
    RFC тебе в руки ;)
     
  9. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    нету самого главного - возможности выдать запрос на сохранение с указанным мною именем файла
     
  10. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    Не приведу пример конкретного синтаксиса, надо искать какие-то примеры или в RFC, но в заголовке HTML можно указать тип содержимого. Если указан тип XML, то он будет открыт в броузере, а если указать "attachment", то броузер предложит сохранить файл на диске пользователя.

    Попробуй как-то так (по памяти, не уверен что синтаксис точный):
    HTML:
    <html>
    <head>
        <meta http-equiv="content-type" content="application/force-download">
        <meta http-equiv="content-disposition" content="attachment; filename='1.mp3'">
    </head>
    </html>
     
Загрузка...

Поделиться этой страницей