Google Cloud Endpoint Send Base 64 Image

I would like to send from my android application to my backend API an image. So in my android application, I am converting the image to base64 string. This part works great.

Android code:

Bitmap resized = Bitmap.createScaledBitmap(AccueilActivity.photo, 720, 1280, true);

ByteArrayOutputStream baos = new ByteArrayOutputStream();
resized.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] byteArray = baos.toByteArray();

String encodedImage = new String(""+Base64.encodeBase64URLSafeString(byteArray));

      

When I want to execute an https endpoint request it fails!

Campagneendpoint endpoint = endpointBuilder.build();
    try {
        result=endpoint.sendCampagne(encodedImage).execute();
    } catch (IOException e) {
        e.printStackTrace();
    }

      

And I have this error:

javax.net.ssl.SSLException: Write error: ssl=0x78edde30: I/O error during system call, Broken pipe

      

But if I pass in a base64 string, it works!

Campagneendpoint endpoint = endpointBuilder.build();
try {
                     result=endpoint.sendCampagne("_9j_4AAQSkZJRgABAQAAAQABAAD_2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH_2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH_wAARCAUAAtADASIAAhEBAxEB_8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL_8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4-Tl5ufo6erx8vP09fb3-Pn6_8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL_8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3-Pn6_9oADAMBAAIRAxEAPwD7T-H1zNcRW0NpvF0zqpvXk82MwyLKr-UgVSXMEyw3BlMkhCq-Y44pJH7Txd4Tu4bRdVtVl1N7iF40aCQYgt_OvZGRWWMpGRK0kYVBvkljJkUHyWHg3wg8TSTQWxt0WM2U7uk0il7e4tWjCuggMk8yPiCViC3kidBBlJFct91x3WneINKYsomQovlxRlcRCTLGZ4x5ojcTqjBAsZYusJZ1QAfnUI06cIwpSVOnSknTkoq6UW-Rxh765oLVuTdnJNas-RxEJNyvCpFJLWblf4oy97eSXu2Xk4t6uz_I342eEtUudO1po1NjBGtrLN5ywYe5jurowRZVCxdFhjnk3xMy3E8UyTGNXU_k18WvCbz3275PtkkTgzi6hnilF3byyxWcqSCCW3L3MG-aR1EU90EluAYhPLH_AES_GTwULbS9Xu7GKGeyng3GWSLzpo51WWa5TUY4C2-OFseVOQA6oYfLicxu34wftAeBRosZlKQPbahNFMkzXICxSrNMsivHOyTKZpoJI7d2SNJRvVAPLuBXq4erSjVV6rqSlCKmqkpNpuaa5E37t7cya15rSam1d5WurTUZW5XrHtfmTV73fNayV3zK8rJ2_Inxb4ZtLiW50zUrOUveK8dndrPHBAPneG7uZrbdPdNDLaRyeQ7TqFuxbcOZnQeUahZySTQLcSRS3NmstirQSQtYtFZPLIksMEyl47d5CZXkuIVEs0zyxqsgdj9P-LNHihubyK7R2NpdbEVlElvc2NwUe3uoyCJIp7O4ZIJleQvL56vaxiJLgx_PfibTLa1ubu7MiyWsCMbYRxg_ZgDM0VtvkuPuPO8kSSrEVXzY4gGIGfTpSao8sVJ35W73jyxlKUownZtXSvyt2k21z1JO0X106UJJyvBpWWkVJNQbjH3bJ2WrXK9XJp3cVJ-fXVmdUs7mV4AtoqmSTyobiezUokcVpdTpIZhbqtyBNPZLGsUjG5UShVmu2yDZaXLA_ny75fMtljdoCG8uPe0kkTFZVlaHdJL5G6QohuXZsb_O0bh7v7DPYQKLZ5_s5vHRZoil1Yz3qW21YkRDafZ47GYTTboh9pMZWOIPGufO3mRrJOp82MM1u0TxRp5DbwsEcZWZSu4Mkc-VmjV549pWOUN0RqyTdk4q0XHV3nzSaTs1o2qemjbsrNysz0oRtzJSi7-yWq1UUlBxUo83K_ier92LV9FrXuLbS9UuHQPGwt1jkijlKvLP9mlbP2YzNvjKMLgJE8oaaQtaK7SsIFt5sRBJPGiW89zLLNPcSXEu24uPtUtq0qrMsLwyXEK2kMSqkUahNwcJFk5VyzrJFbyyKksQt5IQiSCMJBqTSJGkzIFnk8-MmbyZCIJJvLVirxgusIFjlt_MkklljhmicHLNl5bkO-zJkzEsfmJDMRKWQoF3sHqKOLlCqnB29lO8eflau7NcsZe607P3m3O7TSV5TNoq_PFRUk0k9I-9eTSXvK9215JpRS5lFp044rSa2uLZQyy7muVdfswli8iO4jt48s0bZjlVbdE-0qhw22ISiSWSylncNfm51AtdeZ5zyrbxtDdLJBFGIgd8jwgRR28VtbB5IMQQO4dxCxq_JdQX-pzAW4i8uW0RorpmlijWC6nvECSy3Eio53RPcQRsiyI8Vt9midJhJnecbadpInAhHl-RgEMv3LmSRXYSiE-ZHLLcxBmiuNgSPyopZRWMVBTdS2vNJaK15LlfvtSakm3zJtrVyu2mxOnFJpKPIlGNmlyaSVuitsm1y2WsWk7SGR2sAiEZuBOkTIpKSCQkkO1mrSqnFwJQGhME6xK20LHCiqKzZRZweWGhmwWQJIZnfj7TcyEyOvlK0Zmd5Y1VWfbiOaJ5lEraViJFP21PKNtBK1u82HAW6At1iSC3ZZJJI5UYNCIVOQ8shWUNkJJHFIsSEKI0gjjIi3xFGSS5miUJFJIGDPOS0m5Wc7W2vMwek4OUb-zteLellLdpK8m2leSbak9EtWrXnlfO3BpctOmuVt6-80rWV9oK8r6XdoKXNKUcttLI4u3KyPIskjMWYO7xJC3zbQyxgxwxuwjiZUiIeJwyuGdFDF5uYLdlneK23RRyrtzCjIFZVD4QYmRHRlEkZjO2JEK1dhLtNPbLGyF4pEZJ2kt0CwRvHcrK6oHMJiJikERGwTRSEIzLuSaO3tlkjLK5ktpHg8iWAc-ZbNJLHMgEwBkVxiJgV2o8qNI0NwmEnytfE3GWzXvJR50kle8do83bmjbmamawcrJKMbKMIq891ZaNJaPzTbd47_E47vzpwLi6V7p_NidSsvluX23NuAkZ6edEoVGkURLsVQWdWxcKCLUApWRN1rfRzTb98sGI5k8ueJJflHkSMiYZwzqnmRMC8NQW1xqNxPKxDC0xEXeeb92Jm8yCGVJJhJIlqgtFV1k8yGZo7VFiyBvnM6ywyrdmSNrZZZLtjNabZLpZLvykYNJHKFjhVI7kwyMUXb5GQi5zi4qyStH2kWlJNrSLUW4305tdVfTdNyuaQejTurrl5veu3zwbbsrRjJKyacpSjrzWabdb6e1_cPMpS1lt_JZ0mmPlxokDT20xmWCWVDHDFb5idCsrSSxTRAE10cdx5kTC3ZkV5WjtWVoRLFLBKht2YyIFQSyi4splZQYHUS-XgRha1lZyaesyElblZwHd3lmEzRyNsETLcTx2SIlsoVwqANFJGWdBHueljOgguZ7i5juBe_bp5lvbl5be5uWAylzYSNLCwNrATCiSz_ZI3iW3kKxwFKfLz8sIp-0TSSja6sm-VK1uflk3e6bdpNuSKin7ic4XktG1G8XeKSbblyqySXuqz5dY81yWxsbsvOMB1hvoo7iUeVJm4nn3bYik7h2m3IkLQRxEyDzgqOZCl6ITxsJL2fNssyb2Mq2iPJNcON4S6kSPCtM0cc0BkjixerKWid5HrPq-n6TFd3U0Ux8tGCQpPullvpEljiUyraRj_RhHFcb7neixeUI1MjTQ1wcMmpePbuexs1aa1ijjiuY44LgwxpK0sO55LuOBUN4ZGhtbcZupCDczW4iaVkzxmIpQo1MROUoOCtN1YSVOFOCUYSjLmUpN2s_dfvRgr3i2_RwlOdSKjBN6LmaTjFLa8nytRtyQevSTim2pyNnV_iJPZahBbeHYo9QD3BNzLPdyxw3Lq90LcpH5vmhoTMonjX_XxXFypuH3slel_Bv9mnxz8UdctfN0y-tmlaWT7DPb-a0cNtdQygziJ41tp").execute();
} catch (IOException e) {
    e.printStackTrace();
}

      

I tried this but the same problem:

String encodedImage = new String(Base64.encodeBase64URLSafeString(byteArray));
String encodedImage = Base64.encodeBase64URLSafeString(byteArray);

      

Only heavy initialization seems to work:

String encodedImage = "_9j_4AAQSkZJRgABAQAAAQABAAD_2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH_2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH_wAARCAUAAtADASIAAhEBAxEB_8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL_8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4-Tl5ufo6erx8vP09fb3-Pn6_8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL_8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3-Pn6_9oADAMBAAIRAxEAPwD7T-H1zNcRW0NpvF0zqpvXk82MwyLKr-UgVSXMEyw3BlMkhCq-Y44pJH7Txd4Tu4bRdVtVl1N7iF40aCQYgt_OvZGRWWMpGRK0kYVBvkljJkUHyWHg3wg8TSTQWxt0WM2U7uk0il7e4tWjCuggMk8yPiCViC3kidBBlJFct91x3WneINKYsomQovlxRlcRCTLGZ4x5ojcTqjBAsZYusJZ1QAfnUI06cIwpSVOnSknTkoq6UW-Rxh765oLVuTdnJNas-RxEJNyvCpFJLWblf4oy97eSXu2Xk4t6uz_I342eEtUudO1po1NjBGtrLN5ywYe5jurowRZVCxdFhjnk3xMy3E8UyTGNXU_k18WvCbz3275PtkkTgzi6hnilF3byyxWcqSCCW3L3MG-aR1EU90EluAYhPLH_AES_GTwULbS9Xu7GKGeyng3GWSLzpo51WWa5TUY4C2-OFseVOQA6oYfLicxu34wftAeBRosZlKQPbahNFMkzXICxSrNMsivHOyTKZpoJI7d2SNJRvVAPLuBXq4erSjVV6rqSlCKmqkpNpuaa5E37t7cya15rSam1d5WurTUZW5XrHtfmTV73fNayV3zK8rJ2_Inxb4ZtLiW50zUrOUveK8dndrPHBAPneG7uZrbdPdNDLaRyeQ7TqFuxbcOZnQeUahZySTQLcSRS3NmstirQSQtYtFZPLIksMEyl47d5CZXkuIVEs0zyxqsgdj9P-LNHihubyK7R2NpdbEVlElvc2NwUe3uoyCJIp7O4ZIJleQvL56vaxiJLgx_PfibTLa1ubu7MiyWsCMbYRxg_ZgDM0VtvkuPuPO8kSSrEVXzY4gGIGfTpSao8sVJ35W73jyxlKUownZtXSvyt2k21z1JO0X106UJJyvBpWWkVJNQbjH3bJ2WrXK9XJp3cVJ-fXVmdUs7mV4AtoqmSTyobiezUokcVpdTpIZhbqtyBNPZLGsUjG5UShVmu2yDZaXLA_ny75fMtljdoCG8uPe0kkTFZVlaHdJL5G6QohuXZsb_O0bh7v7DPYQKLZ5_s5vHRZoil1Yz3qW21YkRDafZ47GYTTboh9pMZWOIPGufO3mRrJOp82MM1u0TxRp5DbwsEcZWZSu4Mkc-VmjV549pWOUN0RqyTdk4q0XHV3nzSaTs1o2qemjbsrNysz0oRtzJSi7-yWq1UUlBxUo83K_ier92LV9FrXuLbS9UuHQPGwt1jkijlKvLP9mlbP2YzNvjKMLgJE8oaaQtaK7SsIFt5sRBJPGiW89zLLNPcSXEu24uPtUtq0qrMsLwyXEK2kMSqkUahNwcJFk5VyzrJFbyyKksQt5IQiSCMJBqTSJGkzIFnk8-MmbyZCIJJvLVirxgusIFjlt_MkklljhmicHLNl5bkO-zJkzEsfmJDMRKWQoF3sHqKOLlCqnB29lO8eflau7NcsZe607P3m3O7TSV5TNoq_PFRUk0k9I-9eTSXvK9215JpRS5lFp044rSa2uLZQyy7muVdfswli8iO4jt48s0bZjlVbdE-0qhw22ISiSWSylncNfm51AtdeZ5zyrbxtDdLJBFGIgd8jwgRR28VtbB5IMQQO4dxCxq_JdQX-pzAW4i8uW0RorpmlijWC6nvECSy3Eio53RPcQRsiyI8Vt9midJhJnecbadpInAhHl-RgEMv3LmSRXYSiE-ZHLLcxBmiuNgSPyopZRWMVBTdS2vNJaK15LlfvtSakm3zJtrVyu2mxOnFJpKPIlGNmlyaSVuitsm1y2WsWk7SGR2sAiEZuBOkTIpKSCQkkO1mrSqnFwJQGhME6xK20LHCiqKzZRZweWGhmwWQJIZnfj7TcyEyOvlK0Zmd5Y1VWfbiOaJ5lEraViJFP21PKNtBK1u82HAW6At1iSC3ZZJJI5UYNCIVOQ8shWUNkJJHFIsSEKI0gjjIi3xFGSS5miUJFJIGDPOS0m5Wc7W2vMwek4OUb-zteLellLdpK8m2leSbak9EtWrXnlfO3BpctOmuVt6-80rWV9oK8r6XdoKXNKUcttLI4u3KyPIskjMWYO7xJC3zbQyxgxwxuwjiZUiIeJwyuGdFDF5uYLdlneK23RRyrtzCjIFZVD4QYmRHRlEkZjO2JEK1dhLtNPbLGyF4pEZJ2kt0CwRvHcrK6oHMJiJikERGwTRSEIzLuSaO3tlkjLK5ktpHg8iWAc-ZbNJLHMgEwBkVxiJgV2o8qNI0NwmEnytfE3GWzXvJR50kle8do83bmjbmamawcrJKMbKMIq891ZaNJaPzTbd47_E47vzpwLi6V7p_NidSsvluX23NuAkZ6edEoVGkURLsVQWdWxcKCLUApWRN1rfRzTb98sGI5k8ueJJflHkSMiYZwzqnmRMC8NQW1xqNxPKxDC0xEXeeb92Jm8yCGVJJhJIlqgtFV1k8yGZo7VFiyBvnM6ywyrdmSNrZZZLtjNabZLpZLvykYNJHKFjhVI7kwyMUXb5GQi5zi4qyStH2kWlJNrSLUW4305tdVfTdNyuaQejTurrl5veu3zwbbsrRjJKyacpSjrzWabdb6e1_cPMpS1lt_JZ0mmPlxokDT20xmWCWVDHDFb5idCsrSSxTRAE10cdx5kTC3ZkV5WjtWVoRLFLBKht2YyIFQSyi4splZQYHUS-XgRha1lZyaesyElblZwHd3lmEzRyNsETLcTx2SIlsoVwqANFJGWdBHueljOgguZ7i5juBe_bp5lvbl5be5uWAylzYSNLCwNrATCiSz_ZI3iW3kKxwFKfLz8sIp-0TSSja6sm-VK1uflk3e6bdpNuSKin7ic4XktG1G8XeKSbblyqySXuqz5dY81yWxsbsvOMB1hvoo7iUeVJm4nn3bYik7h2m3IkLQRxEyDzgqOZCl6ITxsJL2fNssyb2Mq2iPJNcON4S6kSPCtM0cc0BkjixerKWid5HrPq-n6TFd3U0Ux8tGCQpPullvpEljiUyraRj_RhHFcb7neixeUI1MjTQ1wcMmpePbuexs1aa1ijjiuY44LgwxpK0sO55LuOBUN4ZGhtbcZupCDczW4iaVkzxmIpQo1MROUoOCtN1YSVOFOCUYSjLmUpN2s_dfvRgr3i2_RwlOdSKjBN6LmaTjFLa8nytRtyQevSTim2pyNnV_iJPZahBbeHYo9QD3BNzLPdyxw3Lq90LcpH5vmhoTMonjX_XxXFypuH3slel_Bv9mnxz8UdctfN0y-tmlaWT7DPb-a0cNtdQygziJ41tp";

      

At the moment I am unable to send the image to my backend API because there is an error, I don't know where ... Has anyone already got this error?

+3


source to share


2 answers


The problem was that I had a heap size overflow, so converting the image to base64 was not a good idea.



0


source


You can send messages no more than 1 MB. If you want to store larger files (including images), you must use Blobstore. Here is a good explanation of how to use Blobstore for Java with examples.



Then you just store blobKey

in your datastore and serve it from Blobstore using servlets if needed.

0


source







All Articles