Авторизация в web-сервисах

Код:
%REM
*--------------------------------------------
Function DetachDocFiles
Description: выгружает файлы не только из RT полей (mime тоже)
%END REM
Function DetachDocFiles(objdoc As NotesDocument, Byval filter As String, filesList List As String) As String
	Dim file As String, path As String
	Dim fNames As Variant
	Dim o As NotesEmbeddedObject
	
	On Error Goto ErrorHandler
	Erase filesList
	
	path=Replace(GetNotesTempDirectory(),WINFS_SEP,FS_SEP) & FS_SEP
	file=""
	
	fNames=AttachmentsName(objdoc)
	Dim detach As Boolean, negative As Boolean
	If Left$(filter,1)={!} Then negative=True
	If negative And Len(filter)>0 Then filter=Right$(filter,Len(filter)-1)
	filter=Ucase(filter)
	Forall a In fNames
		Set o=objdoc.GetAttachment(a)
		detach=True
		If Len(filter)>0 Then
			If Not (Ucase(o.Name) Like filter) Then
				detach=False
			End If
			detach=detach Xor negative
		End If
		If detach Then
			file=o.Name
			If UNID_pref Then file=objdoc.UniversalID & PREF_SEP &file
			filesList(file)=path
			Call o.ExtractFile(path & file)
		End If
	End Forall
	If Len(file)>0 Then DetachDocFiles=path & file: Print {First Detached:} DetachDocFiles
Quit:
	Exit Function
ErrorHandler:
	Call RaiseError()
	Erase filesList
	Resume Quit
End Function
 
fNames=AttachmentsName(objdoc) - тянет в fNames все имена вложений в документе?

А что за параметр filter получает функция?

Call o.ExtractFile(path & file) - всё же заливаем вложения на винт
А потом не понял, самой стринговой функции присвоили файл ан винте?
DetachDocFiles=path & file
 
fNames=AttachmentsName(objdoc) - тянет в fNames все имена вложений в документе?
да
А что за параметр filter получает функция?
название отражает суть - по коду видно (используется в like)
всё же заливаем вложения на винт
на ЛС вариантов не тьма ;), не ДХЛ же использовать в данном контексте, да имя ф-цци объясняет суть ;)
А потом не понял, самой стринговой функции присвоили файл ан винте?
да - путь первого файла (не всегда выгружается/нужен список, кот. оседает в List As String)
 
если по памяти не так критично - можно заморочится на ДХЛ, сразу - ибо там уже base64
фильтрованный вариант я не делал, а все аттачи дергать (в т.ч. и картинки) я уже раз 100500 здесь выкладывал
на java в т.ч. в асинхронном потоке
 
Последнее редактирование модератором:
orall o In doc.EmbeddedObjects
End Forall
дает ошибку - переменная не содержит объект.
делать только через @AttachNames


если по памяти не так критично - можно заморочится на ДХЛ, сразу - ибо там уже base64
там не base64, помню тоже так раньше думал, пришлось обжечься
 
да - путь первого файла (не всегда выгружается/нужен список, кот. оседает в List As String)
Пути мне не нужны, я их могу получить.
А как сделать, чтобы в поле экземпляра класса получить само содержимое класса?
чтобы потом вебсервис возвращал что то типа:
<EMBED xsi:type="xsd:string">содержимое файла</EMBED>

Я пока выгружаю на винт, получаю файл в поток "Stream".
А как передать поток в вебсервис, незнаю... какой тип данных дать Embed ?
obyekt.Embed = inStream - некатит....
 
А как передать поток в вебсервис, незнаю... какой тип данных дать Embed ?
obyekt.Embed = inStream - некатит....
и не удивительно - ведь написано String
и потом - передача "сложных" типов потребует десериализацию на стороне клиента...
[DOUBLEPOST=1447851972,1447851754][/DOUBLEPOST]и потом - в LS совершенно спокойно получается строка из стрима https://codeby.net/threads/54783/#post-250246
другой вопрос - эффективность по памяти
 
Спасибо.
С помошью ReadText() получить с потока в стринг файл - не смог.
Только с b64.encode (Stream)
Не понимаю всё же как в вебсервис несколько файлов вернуть. Ошибка, неправильная размерность массива...
Код:
Class ....
Dim ob As New Polia
.....
ob.Embed(1) = "содержимое файла"
End Class
.....
Class Pol
Public Embed (1) As String
End Class
 
Последнее редактирование модератором:
для того чтобы понять что возвращать - должна быть видна вся схема взаинмодействия
второй момент - напуркуа вебсервис? не проще ли REST link removed
фронт легче работает с JSON (чем XML)
современные системы легко интегрируются через REST
меньше труда для создания и поддержки
меньше накладных расходов по трафику (да и на проц)
 
в догонку
 
Все же через вебсервисы, есть пример

он возвращает структуру:
Код:
<bookshelf>
	<shelfnumber>1</shelfnumber>
	<location>JLA Main Office</location>
	<book>
		<author>Barry Allen</author>
		<title>Life in the Fast Lane</title>
		<booktype>Biography</booktype>
	</book>
	<book>
		<author>Bruce Wayne</author>
		<title>Dark Times</title>
		<booktype>Reference</booktype>
	</book>
</bookshelf>

А чтобы получить чуть более сложную структуру:
Код:
<bookshelf>
	<shelfnumber>1</shelfnumber>
	<location>JLA Main Office</location>
	<book>
		<author>Barry Allen</author>
		<title>Life in the Fast Lane</title>
		<booktype>
<a1>1111</a1>
<a1>2222</a1>
</booktype>
	</book>
	<book>
		<author>Bruce Wayne</author>
		<title>Dark Times</title>
		
		<booktype>
<a1>333</a1>
<a1>4444</a1>
</booktype>
	</book>
</bookshelf>

Надо сделать новый класс?, а то масивы не работают у меня в вебсервисах ((
 
Надо сделать новый класс?, а то масивы не работают у меня в вебсервисах ((
да - надо (если цель такая)..., вы примеры старались вдумчиво читать?

там англицким по белому пример с массивом нарисован
и да - вебсервисы на ЛС писать и перегенерять WSDL... может заглючать
 
Вопрос по вебсервисам. Как правильно передавать в вебсервисе вложения в документе? Всякие аттачи.
Выгружать на винт, в поток и кодировать в base64 засовывать?
И непонятно, почему в вебсервисе код с примера:
Forall o In doc.EmbeddedObjects
End Forall
дает ошибку - переменная не содержит объект.

можно просто веб-ссылки передать, а на клиенте скачать
 
View - имя вьюшки?
DocumentName - UNID ?
да, "но есть нюансы"
совершенно не факт, что к-л не заменит имя вьюшки, да и не нужно оно, используйте дефолт - 0
БД переименовать/переместить - не редкий случай, чтобы не переписывать код - RID у БД есть
 
Последнее редактирование модератором:
А есть настройка лимитов памяти для ява машины домино?
А то когда отдаю по вебсервису пару десятков доков с аттачами, то пишет, что не хватает памяти явамашине домино.
Insufficient space in Javaheap to satisfy allocation request
HTTP JVM: java.lang.OutOfMemoryError:
 
А есть настройка лимитов памяти для ява машины домино?
А то когда отдаю по вебсервису пару десятков доков с аттачами, то пишет, что не хватает памяти явамашине домино.
HTTP JVM: java.lang.OutOfMemoryError:
Есть link removedа по умолчанию там только 64Mb,
 
А то когда отдаю по вебсервису пару десятков доков с аттачами, то пишет, что не хватает памяти явамашине домино.
каким образом (код - где)
надо понимать, что если целиком пытаться всосать в память файлы - получится бред, а не вебсервис
так никаких ресурсов не напасешься
надо думать на предмет потоков (такие реализации есть) и отказа от вебсервисов (о чем писал выше)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!