繁体   English   中英

jax-ws 重定向 http/https

[英]jax-ws redirect http / https

如果服务器将 http 上的 301 返回到 https,我在使用 jax-ws 使其工作时遇到问题。 我遇到了一个例外,在用 charles 调试后,重定向似乎不起作用。 我还注意到 http 到 https[*] 有一些技巧,但我不确定它是否仍然适用于 java8

这是我想在网上找到的脏修复程序中使用的伪代码

    TestImplService service = new TestImplService();
    Test test = service.getTestImplPort();
    Map<String, Object> tmp = ((BindingProvider) test).getRequestContext();

    /*dirty fix*/
    tmp.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, tmp.get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY).toString().replace("http:", "https:")
    );


    test.dosomething();

用 https 替换 http 工作,但我不是 100% 确定这是正确的方法。

假设服务器决定停止支持 https,为 http 禁用 301,那么我的修复将不再起作用。

我可以以另一种方式强制跟随重定向吗?

[*] https://docs.oracle.com/javase/6/docs/technotes/guides/deployment/deployment-guide/upgrade-guide/article-17.html

BindingProvider 类 BindingProvider.ENDPOINT_ADDRESS_PROPERTY 属性可用于更改端点 URL; 有时 HTTPS 连接以网络交换机/路由器结束。 因此应用服务器无法实现https的路径。

service = new ....(url, SERVICE_NAME);
port = service.get...BasicHttpEndpoint();
BindingProvider provider = ((BindingProvider) port);
Map<String, Object> map = provider.getRequestContext();
String current = map.get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY).toString();
map.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, current.replace("http:", "https:"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM