Jetty 如何发布表单参数?

Jetty 如何发布表单参数?,jetty,Jetty,我正在尝试发送HTTP POST表单参数。我知道内容类型必须是application/x-www-form-urlencoded,参数必须在请求正文中编码 ,Jetty似乎自动做到了这一点: POST请求与application/x-www-form-urlencoded内容类型一起发送,POST参数值自动进行URL编码 但是,我看到文档发生了变化,现在它说: 通过param()方法添加的POST参数值将自动进行URL编码 果然,调用: httpClient.POST("http://examp

我正在尝试发送HTTP POST表单参数。我知道内容类型必须是
application/x-www-form-urlencoded
,参数必须在请求正文中编码

,Jetty似乎自动做到了这一点:

POST请求与application/x-www-form-urlencoded内容类型一起发送,POST参数值自动进行URL编码

但是,我看到文档发生了变化,现在它说:

通过param()方法添加的POST参数值将自动进行URL编码

果然,调用:

httpClient.POST("http://example.com/entity/1")
        .param("p", "value")
        .send();
现在将这些参数视为URL查询参数。不会向请求正文中添加任何内容


正确发布表单参数的正确方法是什么?

HTML表单是POST请求的主体内容

这意味着您必须使用
org.eclipse.jetty.client.api.ContentProvider
和api

有两种
ContentProvider
实现可用于处理HTML表单

FormContentProvider
  • 类别:
  • 内容类型:
    application/x-www-form-urlencoded
import org.eclipse.jetty.client.util.FormContentProvider;
导入org.eclipse.jetty.util.Fields;
字段=新字段();
把(“水果”、“苹果”);
httpClient.POST(“http://example.com/entity/1")
.content(新FormContentProvider(字段))
.send();
MultiPartContentProvider
  • 类别:
  • 内容类型:
    多部分/表单数据
import org.eclipse.jetty.client.util.MultiPartContentProvider;
导入org.eclipse.jetty.client.util.StringContentProvider;
MultiPartContentProvider multiPart=新的MultiPartContentProvider();
multiPart.addFieldPart(“水果”,新StringContentProvider(“苹果”),null);
multiPart.close();
httpClient.POST(“http://example.com/entity/1")
.内容(多部分)
.send();