Как получить PictureURL из XML-канала Exact Online, чтобы показать картинку с помощью Invantive Data Access Point?
При использовании точки доступа к данным для создания XML-канала используется следующий запрос:
select * from exactonlinerest..items
результирующий XML имеет PictureURL:
https://start.exactonline.nl/docs/SysImage.aspx?Table=Items&ID=3332e277-ba03-420e-84ce-21ac174c5ced&ThumbSize=500&NoCache=1&OptimizeForWeb=1&_Division_=875673
Но при попытке открыть URL возникает ошибка и картинка не отображается.
Как бы я пошел и сделал эту картинку видимой?
3 ответа
Вы можете получить изображение из Exact Online по тому же защищенному каналу, который используется для API в качестве большого двоичного объекта, используя:
select httpget(pictureurl) picture
from me
Это возвращает изображение, которое в приведенном ниже примере автоматически отображается инструментом Query Tool (50 оттенков серого дизайна):
Обратите внимание, что если вы делаете много httpget
каждый из них происходит с некоторыми накладными расходами. Особенно при загрузке тысяч картинок, вы будете испытывать большую нагрузку на Exact Online. Делайте это только при необходимости.
В качестве альтернативы вы также можете использовать:
select *
from exactonlinexml..items
XML API Exact Online возвращает картинку в самой полезной нагрузке, уменьшая количество циклов. Недостатком является то, что если у вас есть изображение глубиной 15.000 x 15.000 пикселей x 32, вы получите... именно это, и оно будет огромным, великолепным и удивительным. Обратите внимание, что XML API использует HTTP-сжатие (gzip).
Преимущество URL, используемого API REST, заключается в том, что он создает миниатюру. Это создаст некоторую нагрузку на сервер Exact (я не знаю, насколько умны они и кешируются), но уменьшает сетевые ограничения. Обратите внимание, что таблицы REST API НЕ используют HTTP-сжатие, поэтому сжимаемый вывод по-прежнему требует большой полосы пропускания. Как вы можете видеть, существует множество проектных решений, которые необходимо принять и протестировать, несмотря на простоту использования SQL при больших загрузках и / или выгрузках.
Вы, вероятно, можете поиграть с размером миниатюры, как показано ниже:
URL-адрес в XML-загрузке точки доступа к данным имеет кодировку XML, что означает, что некоторые символы со специальным значением были заменены их закодированным вариантом. (лайк &
-> &
).
Вы должны декодировать URL-адрес (доступно множество онлайн-инструментов, и с помощью некоторого кода это тоже возможно, в зависимости от используемого языка программирования) в его декодированный вариант. Для вашего URL это:
https://start.exactonline.nl/docs/SysImage.aspx?Table=Items&ID=3332e277-ba03-420e-84ce-21ac174c5ced&ThumbSize=500&NoCache=1&OptimizeForWeb=1&_Division_=875673
Вы должны войти в веб-интерфейс Exact Online, чтобы иметь доступ к этому изображению.
Изображение доступно, когда вы вошли в Exact Online.
Также вы можете получить изображение, когда передадите Клятву Авторизатора в геттерном заголовке в Запросе на получение.
Когда вы используете Exact Online Client API в C#, это выглядит так:
using (var stream = client.GetAttachment(PictureUrl))
{
int ReadByte = stream.ReadByte();
List<byte> readlist = new List<byte>();
while (ReadByte >= 0)
{
readlist.Add((byte)ReadByte);
ReadByte = stream.ReadByte();
}
downloadData = readlist.ToArray();
}