在Java方法中,我想使用Jersey客户端对象在REST风格的Web服务(也使用Jersey编写)上执行POST操作,但不知道如何使用客户端发送将在服务器上用作FormParam的值。我能够发送查询参数就好了。使用Jersey客户端执行POST操作
在此先感谢。
在Java方法中,我想使用Jersey客户端对象在REST风格的Web服务(也使用Jersey编写)上执行POST操作,但不知道如何使用客户端发送将在服务器上用作FormParam的值。我能够发送查询参数就好了。使用Jersey客户端执行POST操作
在此先感谢。
我自己还没有做过这件事,但Google-Fu的一小段内容揭示了一个tech tip on blogs.oracle.com,其中包含您要求的具体示例。
例如,从博客文章采取:
MultivaluedMap formData = new MultivaluedMapImpl();
formData.add("name1", "val1");
formData.add("name2", "val2");
ClientResponse response = webResource
.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
.post(ClientResponse.class, formData);
那任何帮助吗?
你也可以试试这个:如果你需要做一个文件上传
MultivaluedMap formData = new MultivaluedMapImpl();
formData.add("name1", "val1");
formData.add("name2", "val2");
webResource.path("yourJerseysPathPost").queryParams(formData).post();
,你需要使用MediaType.MULTIPART_FORM_DATA_TYPE。 看起来像MultivaluedMap不能用于这个,所以这是一个FormDataMultiPart的解决方案。
InputStream stream = getClass().getClassLoader().getResourceAsStream(fileNameToUpload);
FormDataMultiPart part = new FormDataMultiPart();
part.field("String_key", "String_value");
part.field("fileToUpload", stream, MediaType.TEXT_PLAIN_TYPE);
String response = WebResource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(String.class, part);
从泽西岛2.X开始,MultivaluedMapImpl
类由MultivaluedHashMap
取代。你可以用它来添加表单数据并将数据发送到服务器:
WebTarget webTarget = client.target("http://www.example.com/some/resource");
MultivaluedMap<String, String> formData = new MultivaluedHashMap<String, String>();
formData.add("key1", "value1");
formData.add("key2", "value2");
Response response = webTarget.request().post(Entity.form(formData));
注意窗体实体在"application/x-www-form-urlencoded"
的格式发送。
最简单的:
Form form = new Form();
form.add("id", "1");
form.add("name", "supercobra");
ClientResponse response = webResource
.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
.post(ClientResponse.class, form);
现在在Jersey Client documentation
实施例5.1第一例子。与表单参数
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:9998").path("resource");
Form form = new Form();
form.param("x", "foo");
form.param("y", "bar");
MyJAXBBean bean =
target.request(MediaType.APPLICATION_JSON_TYPE)
.post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE),
MyJAXBBean.class);
链接POST请求,现在是可操作的 – orique 2013-12-11 12:29:20