Как отправить эти составные данные/данные формы в веб-службу с помощью Genexus?

#genexus

Вопрос:

Следующий завиток отлично работает всякий раз, когда я его тестирую:

 curl --request PUT 
 --url https://api.sandbox.URL_HERE/document-analysis/90471702021 
 --header 'Accept: application/json' 
 --header 'Authorization: Bearer AUTH_TOKEN' 
 --header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' 
 --header 'api-version: 1.0' 
 --form documentType=RG 
 --form documentSide=FRONT 
 --form 'image=data:image/jpeg;name=RG_Front.jpg;base64,/9j/4AAQSkZJRgABAQEAAQABAAD/4Tn0RXhpZgAATU0AKgAAAAgABgALAAIAAAAmAAAIYgESAAMAAAABAAEAAAExAAIAAAAmAAAIiAEyAAIAAAAUAAAIrodpAAQAAAABAAAIwuocAAcAAAgMAAAAVgAAEUYc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8JeLF8wysb6N95 837vqfyr2KvwCwP8VH2ABmkb5RQGx2qNm8zhTj3rk5rH0xImduKSY7UP0NPHFMlXcpHTrWiE9j8eNcuLbT/FWpXcipPi/uC1uyNIANzjHHBIyDjOOKyLW8eOS7gNrCTdRF7O3RiESOLUbZY4IdzF41TcQC2R87bm5bmv0mK4xg4HpSKvvUuTvoP6nT7n5yXf7KPxc1ZZVu/Blg6SzNM6HWwgJBCoC6PvYJGCqqWIGScE1auP2SPi/N5/k6PpzPNGgaS81OKRvMRsrIw2FXO0BeRkjqa/RPb6mk9s5p8zBYOmj88ZP2Q/i2bGZY9G0a3U5aOFdV3m2YjD QzIfJDDIKgkYPGOtQ/8MY/F545IF0/w9DaTFQYDqLHZGH3MrfJ 8LHGWfeeOMV ie31PNJt96lTfYr6pTPz7uv2Mfi1eNMGj8OqZFYSTSavcOZN3396mMpg4U4CjGwY4zmP/hhv4pLkJN4XXdsORqFwJBIo4lRxFuRupwDt55Br9BiWVckcD0py4ZfahzYfVKZ8FzfsY/FqaczjVPCkcwiMcbLLKFiJxmRUEITzG6l2UsSeopY/wBjH4sRRzww6l4at02qiqt5clSqjCAAx5GDluSQWJJB6V96YpazUmxfU6Z8Ff8ADC3xDa4eU6p4XVWDYgae6aJCTkFRtyMNlsZxknjHFWY/2IviSm Qa54dt7qUbJbi3aVfMXn5inlbA4zw6gMvY55r7s/GkxVuTZX1Sl2PhrUv2JfHV7Ggh1Pw3BIhk2SMZ2I3kZY/J8zkKFJbOB0rPuP2F/iDJIZzrvhuKbIPmwrP5seAAuxsZGMYAHGCRz1r70C 9Ky7hg9KmMmxrC0k9j4Mtf2F/HlxZrt8ReGpY2V0fCTbZo2cNsdduOCOowck8mtLUP2KfiJeafZWr INDuRZktH9pedgWzkM42fvCvG3eW24GMDivuCOBY12rgD2GKk21pqJ4Sk3sfBq/sP/ABNbAl8QeGpAsLQ5LTh3DtmTJCBvn6HBHy8DAqC3/YV IdtZ Ql/4R8pZBMIVM4jLjI3Y8v5SVwpweQBmvvnbRirF9Updj4Ot/2JfiVZyWskOq FxLbAqkpeZmaM/wDLJw0RWVM5P7wMeevTEH/DE/xSEjynUfClxLJKJpWnuLhnmYcqrN5fCA/wJtX2r7320bB/kmkL6nTPgif9hv4kXWm2llc3vhG jttzo11Lc5Dv98gogwWODkc5HBqoP2FPihHfPdprPhn7Vu3CWSSR9/GDvBhw/wBWyR2r9Atopdop3D6nTPgZf2I/icNJ wDVvDpt/M4tje3IjEZBzECIw4QHB8sPtz IPWfB39kbx54F LWheJ9W1Lw/Np nzO7x6c8yv5flNGkaIUCBFBGAOeTknivsvb15pjAD LAHXNTKWg44WnF3Q9felIxTc84xUlZWTO0jf/V5709elFFa9QFooopgMXvT6KKACiiigAooooAKKKKACkHSiikAtFFFCAKKKKYBRRRQAVG1FFSwFX7tPoopIBrULRRR1AdTKKKUtgCnUUUgEXvUUP8AqxRRUMCSiiihbgFFFFNgMqWiinABaKKK2AKKKKACiiigAooooAZJ3qP 9RRWD3Akp9FFVED/2Q=='
 

Строка Base64 выше была вырезана только для того, чтобы соответствовать полю комментария, но вы поняли идею.

Мне просто нужно отправить некоторую информацию в конечную точку с помощью HttpClient, но я застрял, особенно потому, что Genexus говорит, что строка слишком большая, когда я пытаюсь преобразовать изображение (1 МБ) в строку base64.
Кто-нибудь проходил через это?

Ответ №1:

Похоже, что веб-служба ожидает новую «составную часть/данные формы» вместо старой «приложение/x-www-форма-url-код» для загрузки файлов, как описано здесь, и раздел спецификации для форм в HTML 4.01 здесь. Итак, переходя к вашему вопросу, я думаю, что вы можете использовать метод addFile типа данных HttpClient (как описано здесь), чтобы заставить вашего клиента работать. Почитайте вики, там написано:

В частности, если содержимое сообщения HttpClient состоит из нескольких частей / данных формы (задается заголовком типа содержимого), то метод addFile добавляет файл как составной. В этом случае второй параметр необходим для указания имени переменной, которую представляет файл. Кроме того, вы должны обязательно предварять свое предложение заголовком, указывающим определенный тип контента, например: amp;Httpclient.Заголовок добавления(«Тип содержимого», !»составные/данные формы»)

Я говорю «я думаю», потому что я не проверял себя, вы можете попробовать и сообщить нам, работает это или нет.