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