Как сделать multipart / form-data post в Jetty HttpClient - PullRequest
0 голосов
/ 31 августа 2011

Мне интересно, может ли кто-нибудь помочь мне там? Для проекта Java я хочу использовать Jetty HttpClient , который будет отправлять данные в веб-службу Restful. Есть несколько вопросов:

  1. Поддерживает ли клиент Jetty отправку данных из нескольких частей / форм? Из Jetty doc для отправки любых данных вам необходимо указать содержимое запроса с помощью метода HttpExchange.setRequestContent (Buffer) или HttpExchangge.setRequestContentSource (InputStream). Если я иду с setRequestContentSource для загрузки файла, как я могу установить дополнительные параметры формы, такие как имя файла для составного сообщения?

  2. Есть ли способ проверить ход загрузки с помощью клиента Jetty? Мне нужна стандартная вещь, как индикатор выполнения, который показывает отправку байтов,% и т. Д. Jetty предоставляет множество обратных вызовов, таких как onResponseContent, onResponseStatus, onRequestCommitted, но никто из них не может помочь в мониторинге количества отправленных байтов. Возможно ли получить прогресс загрузки с Jetty httpclient?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 16 августа 2016

Вы должны использовать MultiPartContentProvider

From: http://download.eclipse.org/jetty/9.3.9.v20160517/apidocs/org/eclipse/jetty/client/util/MultiPartContentProvider.html

ContentProvider для загрузки форм с типом содержимого "multipart / form-data".

Пример использования:

 MultiPartContentProvider multiPart = new MultiPartContentProvider();
 multiPart.addFieldPart("field", new StringContentProvider("foo"), null);
 multiPart.addFilePart("icon", "img.png", new PathContentProvider(Paths.get("/tmp/img.png")), null);
 multiPart.close();
 ContentResponse response = client.newRequest("localhost", connector.getLocalPort())
     .method(HttpMethod.POST)
     .content(multiPart)
     .send();

Приведенный выше пример будет эквивалентен отправке этой формы:

 <form method="POST" enctype="multipart/form-data"  accept-charset="UTF-8">
     <input type="text" name="field" value="foo" />
     <input type="file" name="icon" />
 </form>
0 голосов
/ 09 мая 2012

Использование Apache Http client 4.x вам немного поможет. Посмотри пожалуйста: http://hc.apache.org/httpcomponents-client-ga/examples.html

...