Jetty 如何发布表单参数?
我正在尝试发送HTTP POST表单参数。我知道内容类型必须是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
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();