我想知道是否有人可以帮助我。 对于Java项目,我想使用将Jetty HttpClient发送到Restful webservice的数据。 有几个问题:
Jetty客户端是否支持multipart / form-data帖子? 从Jetty doc,通过使用HttpExchange.setRequestContent(Buffer)或HttpExchangge.setRequestContentSource(InputStream)方法发送您需要指定请求内容的任何数据。如果我使用setRequestContentSource进行文件上传,我怎么能为多部分帖子设置一个额外的表格参数如文件名?
有没有办法检查使用Jetty客户端上传的进度?我需要一个标准的东西,如进度条,显示字节发送,%等 Jetty提供了大量的回调,如onResponseContent,onResponseStatus,onRequestCommitted,但是没有人可以帮助监视已发送的字节数。是否可以使用Jetty httpclient获得上传进度?
提前谢谢
答案 0 :(得分:1)
您必须使用MultiPartContentProvider
使用“multipart / form-data”内容类型进行表单上传的ContentProvider。
使用示例:
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>
答案 1 :(得分:-1)
使用Apache Http客户端4.x会对你有所帮助。 请参阅: http://hc.apache.org/httpcomponents-client-ga/examples.html