从MultivaluedMap jax-rs调用web服务



我有一个web服务,它接受客户端请求并将其发送给第二个web服务。它接收第二个web服务的响应并将其发送给客户端。事实上,这是一个门户。请求类型为"表单URL编码"。网关接收来自客户端的请求,如下所示:

@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-RSClient发送POST请求,请调用buildPost(Entity<?> entity),其中entity是POST内容。

Entity有许多有用的辅助方法,例如form(MultivaluedMap<String,String> formData):

创建一个"application/x-www-form-urlencoded"表单实体。

所以,你写这样的东西:

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

最新更新