Wie erhält man die PictureURL aus dem Exact Online XML-Feed, um das Bild mit dem Invantive Data Access Point anzuzeigen?

1102
RH1985

Wenn Sie mit Data Access Point einen XML-Feed generieren, verwenden Sie die folgende Abfrage:

select * from exactonlinerest..items 

Das resultierende XML hat eine PictureURL:

https://start.exactonline.nl/docs/SysImage.aspx?Table=Items&ID=3332e277-ba03-420e-84ce-21ac174c5ced&ThumbSize=500&NoCache=1&OptimizeForWeb=1&_Division_=875673 

Beim Versuch, die URL zu öffnen, tritt ein Fehler auf und das Bild wird nicht angezeigt.

Wie würde ich gehen und das Bild sichtbar machen?

6
Was sagt der Fehler? Bist du dir auch sicher, dass es ein Bild und jetzt eine Webseite ist? Sie können dies überprüfen, indem Sie die F12-Browserentwicklertools und die Registerkarte Netzwerk verwenden. RamonRobben vor 7 Jahren 0
Ich bekomme einen "Oops" -Fehler als Gegenleistung. Aber mit der Lösung in der Antwort unten sehe ich jetzt das Bild! RH1985 vor 7 Jahren 0

3 Antworten auf die Frage

4
Patrick Hofman

Die URL im XML-Download von Data Access Point ist XML-codiert. Dies bedeutet, dass einige Zeichen mit besonderer Bedeutung durch ihre codierte Variante ersetzt wurden. (wie &-> &).

Sie müssen die URL (es gibt viele Online-Tools zur Verfügung, und durch etwas Code ist es auch möglich, abhängig von der verwendeten Programmiersprache) zur dekodierten Variante. Für Ihre URL ist das:

https://start.exactonline.nl/docs/SysImage.aspx?Table=Items&ID=3332e277-ba03-420e-84ce-21ac174c5ced&ThumbSize=500&NoCache=1&OptimizeForWeb=1&_Division_=875673 

Sie müssen auf der Weboberfläche von Exact Online angemeldet sein, um übrigens auf dieses Bild zugreifen zu können.

Ich habe es jetzt zum Laufen gebracht, aber nur, weil ich tatsächlich angemeldet bin. Gibt es eine Funktion / API, um das Bild abzurufen, ohne angemeldet zu sein? RH1985 vor 7 Jahren 0
Nein, es ist eine Sicherheitsfunktion, was meiner Meinung nach in Ordnung ist. Lassen Sie mich sehen, ob Sie es mit Invantive SQL abrufen können. Patrick Hofman vor 7 Jahren 0
Es ist in Ordnung, dass es sich um eine Sicherheitsfunktion handelt, aber ich hoffte, dass es eine Ausnahme geben würde, wenn Bilder mit Exact Online-Produkten auf einer Website angezeigt werden. Vielen Dank! RH1985 vor 7 Jahren 0
Nein, das würde bedeuten, * jemand * könnte Ihre Bilder herunterladen, auch die Benutzerbilder usw. Nicht in Ordnung! :) Patrick Hofman vor 7 Jahren 0
Richtig, habe nicht darüber nachgedacht :) RH1985 vor 7 Jahren 0
Zum Dekodieren der XML-Elemente können Sie auch Folgendes verwenden: Wählen Sie xmldecode (FIELD-OR-EXPRESSION) von exactonlinerest..items aus. Guido Leenders vor 7 Jahren 0
Nein, das kannst du nicht. Die Ausgabe im XML-Format ist verschlüsselt. Es muss. @ guido Patrick Hofman vor 7 Jahren 0
@PatrickHofman Entschuldigung, Sie haben Recht, ich habe vermisst, dass es sich um einen Data Access Point mit einer XML-Ausgabe handelt. Die Ergebnismenge wird dann natürlich in XML geändert. Guido Leenders vor 7 Jahren 0
2
Guido Leenders

Sie können das Bild von Exact Online über denselben sicheren Kanal abrufen, der für die APIs als Blob verwendet wird, indem Sie Folgendes verwenden:

select httpget(pictureurl) picture from me 

Dadurch wird das Bild abgerufen, das im nachstehenden Beispiel automatisch von Query Tool (50 Graustufen) gerendert wird:

Bild-Blob abrufen

Beachten Sie, dass, wenn Sie viel tun httpget, ein gewisser Aufwand auftritt. Insbesondere beim Herunterladen von Tausenden von Bildern werden Sie mit Exact Online viel belastet. Tun Sie es nur wenn nötig.

Alternativ können Sie auch verwenden:

select * from exactonlinexml..items 

Die XML-API von Exact Online gibt das Bild in der Nutzlast selbst zurück, wodurch die Anzahl der Roundtrips reduziert wird. Der Nachteil ist, dass wenn Sie ein 15.000 x 15.000 Pixel x 32 Tiefenbild haben, Sie genau das bekommen, und es ist riesig und großartig und erstaunlich. Bitte beachten Sie, dass die XML-API die HTTP-Komprimierung (gzip) verwendet.

Die von der REST-API verwendete URL hat den Vorteil, dass eine Miniaturansicht erstellt wird. Dies führt zu einer gewissen Belastung des Exact-Servers (ich weiß nicht, ob und wie intelligent er zwischenspeichert), reduziert jedoch die Netzwerkeinschränkungen. Bitte beachten Sie, dass REST-API-Tabellen KEINE HTTP-Komprimierung verwenden. Daher erfordert die komprimierbare Ausgabe noch viel Bandbreite. Wie Sie sehen, müssen Sie trotz der einfachen Verwendung von SQL viele Designentscheidungen treffen und testen, wenn Sie große Downloads und / oder Uploads durchführen.

Sie können wahrscheinlich mit der Größe der Miniaturansicht wie unten gezeigt umgehen:

Ändern der Miniaturbildgröße

Es funktionierte mit dem Feld "IMAGE_BINARYDATA" aus "exactonlinexml..items". Vielen Dank! Es ist ein riesiges Datenfeld, aber es ist das einzige, das nicht angemeldet sein muss. RH1985 vor 7 Jahren 0
0
Salomons

Das Bild ist verfügbar, wenn Sie bei Exact Online angemeldet sind.

Sie können das Bild auch abrufen, wenn Sie den Eid Authorization Bearer im Header "Get" abrufen.

Wenn Sie die Exact Online Client-API in C # verwenden, sieht es folgendermaßen aus:

 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(); }