我有一个Web服务,该服务接受客户请求并将其发送到第二个Web服务。它获取第二个Web服务的响应并将其发送到客户端。实际上,这是一个网关。请求类型为“ 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”。是否可以在不对此MultivaluedMap进行任何处理的情况下调用第二个Web服务?
答案 0 :(得分:1)
要使用JAX-RS Client
发送POST请求,请调用buildPost(Entity<?> entity)
,其中entity
是POST内容。
Entity
有许多有用的辅助方法,例如form(MultivaluedMap<String,String> formData)
:
创建一个“应用程序/ x-www-form-urlencoded”表单实体。
因此,您编写如下内容:
Future<Response> response = client.target("http://example.com/foo")
.request()
.buildPost(Entity.form(encodedRequest))
.submit();