我有一个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();