从 MultivaluedMap jax-rs 调用 Web 服务

Invoking web service from a MultivaluedMap jax-rs

我有一个 Web 服务接受客户端请求并将其发送到第二个 Web 服务。它获取第二个 Web 服务的响应并将其发送到客户端。其实它是一个网关。请求类型为 "form urlencoded"。网关接受来自客户端的请求如下:

@WebMethod
@POST
@Path("/send")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
String send(MultivaluedMap<String, String> encodedRequest, @Context HttpServletRequest httpServletRequest);

现在我有一个 MultivaluedMap,我想用这个 MultivaluedMap 调用第二个 Web 服务,而不对其执行任何处理。第二个 Web 服务也消耗 "application/x-www-form-urlencoded"。有什么方法可以调用第二个 Web 服务而无需对此 MultivaluedMap 执行任何处理?

使用 JAX-RS Client, you call buildPost(Entity<?> entity) 发送 POST 请求,其中 entity 是 POST 内容。

Entity has many useful helper methods, e.g. form(MultivaluedMap<String,String> formData):

Create an "application/x-www-form-urlencoded" form entity.

所以,你这样写:

Future<Response> response = client.target("http://example.com/foo")
                                  .request()
                                  .buildPost(Entity.form(encodedRequest))
                                  .submit();