我想使用我在Glassfish上的JavaEE应用程序中的代理访问远程Web服务。因此,我需要传递目标主机名以外的Host标头。使用Metro 2.3.1 Web服务客户端实现,我将其传递为:
Map<String, List<String>> headers = new HashMap<>();
headers.put("Host", Arrays.asList("remote.server.com"));
Map<String, Object> context = ((BindingProvider) service).getRequestContext();
context.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
但是我可以看到Host标头被目标主机名替换:
Host: my.proxy.org
如果我使用Host以外的标头名称,例如Host1,就可以了,我可以看到两个标头:
Host1: remote.server.com
...
Host: my.proxy.org
是否可以使用Metro客户端替换受限制的标头主机?