powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Потоки через SOAP
2 сообщений из 2, страница 1 из 1
Потоки через SOAP
    #36019778
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста как оформить SOAP-сервис и SOAP-клиент для передачи %FileBinaryStream.
Необходимо что бы SOAP-сервис по запросу SOAP-клиента отдавал такой поток.
SOAP-сервис: Cache for UNIX (SUSE Enterprise Server 9 for x86-64) 2008.1 (Build 401_0_7337)
SOAP-клиент: Cache for UNIX (SUSE Enterprise Server for x86-64) 2008.2.2 (Build 922)
...
Рейтинг: 0 / 0
Потоки через SOAP
    #36020533
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Метод сервиса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Method GetAttachment(MessageId As %String, AttachId As %String, Output ContentType As %String) As %FileBinaryStream [ WebMethod ]
{
	S ContentType=""
	D ..CheckClientIP()
	S attach=##class(System.AttachedFile).%OpenId(AttachId)
	D:('$ISOBJECT(attach)) ..GenerateError("Указанный прикреплённый файл не существует")
	D:('$ISOBJECT(attach.OREF)) ..GenerateError("Указанное сообщение не существует")
	D:((attach.OREF.%Id()'=MessageId)||(attach.OREF.%ClassName(1)'="Messages.Message")) ..GenerateError("Не верен ID файла или ID сообщения")
	S fbs=##class(%FileBinaryStream).%New()
	S fbs.Filename=$ZCVT($$$PREF("Common","AttachedFiles")_attach.Dir_attach.Name,"O","UTF8")
	S ContentType=attach.ContentType
	Q fbs
}
Метод клиента:
Код: plaintext
1.
2.
3.
4.
Method GetAttachment(MessageId As %String, AttachId As %String, Output ContentType As %String) As %xsd.base64Binary [ Final, ProcedureBlock =  1 , SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
{
 Quit ..WebMethod("GetAttachment").Invoke(##this,"http://portmonet.ru/MessagesService.Service.GetAttachment",.MessageId,.AttachId,.ContentType)
}
После выполнения получаю ошибку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
>S ContentType="", MessageId= 1068529 , AttachId= 6141 
>S soapclient=##class(WebServiceClient.Messages.MessagesServiceSoap).%New()
>S res=soapclient.GetAttachment(MessageId,AttachId,.ContentType)

     if MethodName'="" Ztrap "SOAP"
                       ^
<ZSOAP>zInvokeClient+ 355 ^WebServiceClient.Messages.MessagesServiceSoap. 1 

4d1>w %objlasterror
 0  eX▒:GetAttachmentResult (заканчивается в строке  4  символ  73 )КCjxodG1sPgo8aGVhZD4KCTx0aXRsZT7O8ve48iDv7iDm8/Dt4OvzIO7v5fDg9ujpPC90aXRsZT4K
                                                                                                                                           CTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
                                                c2V0PXdpbmRvd3MtMTI1MSI+ICAgCgk8bGluayByZWw9IlVXMLImportErr+ 4 ^WebServiceClient.Messages.MessagesServiceSoap.GetAttachment. 1 :PROFFIS


Причём если тестировать метод через web-интерфейс Cache, то всё отрабатывается нормально...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Потоки через SOAP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]