天天看點

使用代碼獲得Hybris Commerce裡顯示的産品圖檔

使用下面這個API去取Hybris Commerce系統裡産品主資料的明細資訊: https://:9002/rest/v2/electronics/products/300938?fields=FULL

其中圖檔的url包含在字段images.url裡,如下圖所示:

加上全域名後,這個url是能夠直接在浏覽器裡通路的:

https://:9002/rest/v2/medias/?context=bWFzdGVyfGltYWdlc3wxMzkzNnxpbWFnZS9qcGVnfGltYWdlcy9oMGQvaDVhLzg3OTYyMTQwOTk5OTguanBnfDIwNTM4ZDc0YjQ5YjQzNGE0ZTJlMDZlNmU2NGNmOTI4MzAwOGM1Y2UwNTkyZmJkMzczMTljN2I2N2MzZmY3N2I

隻是因為我這台運作Hybris commerce的伺服器證書設定有問題,是以微信裡通路這個url時,報下面的錯誤:

該位址為IP位址,請使用域名通路網站:

在手機浏覽器裡直接輸入IP位址是可以通路這張圖檔的:

url裡的context的值:bWFzdGVyfGltYWdlc3wxMzkzNnxpbWFnZS9qcGVnfGltYWdlcy9oMGQvaDVhLzg3OTYyMTQwOTk5OTguanBnfDIwNTM4ZDc0YjQ5YjQzNGE0ZTJlMDZlNmU2NGNmOTI4MzAwOGM1Y2UwNTkyZmJkMzczMTljN2I2N2MzZmY3N2I

這個值是base64編碼之後的值,使用常用的base64解碼之後檢視:

就是一些Hybris系統上存儲圖檔的Administration資訊。

考慮到直接傳回這個url給消費端的話,由于證書問題,前端顯示這個圖檔不太友善,故我們決定将圖檔的base64編碼之後的内容傳回給前端,而不是url.

故使用下面這段簡單的代碼,根據url獲得圖檔的base64 encode編碼值:

RestTemplate template = new RestTemplate();
         String url = "https://<host>:9002/rest/v2/medias/?context=bWFzdGVyfGltYWdlc3wxMzkzNnxpbWFnZS9qcGVnfGltYWdlcy9oMGQvaDVhLzg3OTYyMTQwOTk5OTguanBnfDIwNTM4ZDc0YjQ5YjQzNGE0ZTJlMDZlNmU2NGNmOTI4MzAwOGM1Y2UwNTkyZmJkMzczMTljN2I2N2MzZmY3N2I";
         byte[] imageBytes = template.getForObject(url, byte[].class);
         System.out.println("response size: " + imageBytes.length);
         
         String base64Image = Base64.getEncoder().encodeToString(imageBytes);
         System.out.println("content: " + base64Image);           

将生成的base64編碼粘貼近線上base64解碼網站,可以成功還原成圖檔:

本文來自雲栖社群合作夥伴“汪子熙”,了解相關資訊可以關注微信公衆号"汪子熙"。