Я пытаюсь переслать большой файл, вытащенный в качестве входного потока, в другую службу, используя spring restmemplate. Я последовал за ответом @artbristol в этом разделе: Как пересылать большие файлы с помощью RestTemplate?
И похоже, что он правильно настроил тело запроса (захват запроса с помощью charlesproxy). Проблема в том, что я не задал заголовки правильно, так как я считаю, что мне нужно установить тип содержимого как multipart/formdata, который я попытался, добавив это в обратный вызов:
request.getHeaders().setContentType(
new MediaType("multipart", "form-data"));
Но в заголовках http я все еще не хватает границ, не знаю, как это установить, и я уверен, что, вероятно, мне не хватает других настроек.
Похоже, проблема заключается в том, что я не включил путь к htrace-core.jar в пути искрового класса: spark-shell -driver-class-path/opt/cloudera/parcels/CDH/lib/hbase/hbase- server.jar: /opt/cloudera/parcels/CDH/lib/hbase/hbase-protocol.jar: /opt/cloudera/parcels/CDH/lib/hbase/hbase-hadoop2-compat.jar:/опт/Cloudera/посылок /CDH/lib/hbase/hbase-client.jar: /opt/cloudera/parcels/CDH/lib/hbase/hbase-common.jar: /opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core.jar:/и т.д. /HBase/CONF
Похоже, это ново для искры 1.x
Поэтому я смог понять это. В основном мне нужно было создать преобразователь сообщений Spring, который будет принимать входной поток и выписать его в тело. Я также в основном должен использовать Form Message Converter, чтобы выписать тело ответа.
Поэтому в restTemplate я вызываю конвертер сообщений для добавления нового конвертера сообщений потока. В обратном вызове я создаю многовалютную карту, которая принимает строку и входной поток и переносит это вокруг HttpEntity. Затем я создаю новый экземпляр конвертера форм-сообщений и звоню на запись, передавая запрос и карту mutlivaluemap.