使用程式碼獲得Hybris Commerce裡顯示的產品圖片

i042416發表於2019-12-14

使用下面這個API去取Hybris Commerce系統裡產品主資料的明細資訊:

https://<host>:9002/rest/v2/electronics/products/300938?fields=FULL
其中圖片的url包含在欄位images.url裡,如下圖所示:

使用程式碼獲得Hybris Commerce裡顯示的產品圖片

加上全域名後,這個url是能夠直接在瀏覽器裡訪問的:https://<host>:9002/rest/v2/medias/?context=bWFzdGVyfGltYWdlc3wxMzkzNnxpbWFnZS9qcGVnfGltYWdlcy9oMGQvaDVhLzg3OTYyMTQwOTk5OTguanBnfDIwNTM4ZDc0YjQ5YjQzNGE0ZTJlMDZlNmU2NGNmOTI4MzAwOGM1Y2UwNTkyZmJkMzczMTljN2I2N2MzZmY3N2I

只是因為我這臺執行Hybris commerce的伺服器證書設定有問題,因此微信裡訪問這個url時,報下面的錯誤:
該地址為IP地址,請使用域名訪問網站:

使用程式碼獲得Hybris Commerce裡顯示的產品圖片

在手機瀏覽器裡直接輸入IP地址是可以訪問這張圖片的:

使用程式碼獲得Hybris Commerce裡顯示的產品圖片

url裡的context的值:bWFzdGVyfGltYWdlc3wxMzkzNnxpbWFnZS9qcGVnfGltYWdlcy9oMGQvaDVhLzg3OTYyMTQwOTk5OTguanBnfDIwNTM4ZDc0YjQ5YjQzNGE0ZTJlMDZlNmU2NGNmOTI4MzAwOGM1Y2UwNTkyZmJkMzczMTljN2I2N2MzZmY3N2I

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

使用程式碼獲得Hybris Commerce裡顯示的產品圖片

就是一些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解碼網站,可以成功還原成圖片:

使用程式碼獲得Hybris Commerce裡顯示的產品圖片

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

使用程式碼獲得Hybris Commerce裡顯示的產品圖片


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2668583/,如需轉載,請註明出處,否則將追究法律責任。

相關文章