ベーシック認証が設定されているWebサービスへのアクセス方法
JAX-WSを利用して、ベーシック認証が設定されているWebサービスへアクセスする方法は以下。
import javax.xml.ws.BindingProvider; HelloPort port = helloService.getHelloPort(); BindingProvider bp = (BindingProvider)port; Map<String, Object> reqContext = bp.getRequestContext(); reqContext.put(BindingProvider.USERNAME_PROPERTY, "username"); reqContext.put(BindingProvider.PASSWORD_PROPERTY, "password");
参考:https://jax-ws.dev.java.net/faq/index.html#auth
ちなみに、JAX-WS 2.1の場合はBindingProviderの代わりに、BindingProviderを継承し機能拡張したWSBindingProviderを利用する事も出来る。
【追記】
JAX-WSの旧バージョンにあたるJAX-RPCの場合、上記のBindingProviderクラスは利用出来ない。しかし、以下のようなコードで同等の事が実現できる。
import javax.xml.rpc.Stub HelloPort port = helloService.getHelloPort(); HelloPort_Stub stub = (HelloPort_Stub)port; stub._setProperty(Stub.USERNAME_PROPERTY, "username"); stub._setProperty(Stub.PASSWORD_PROPERTY, "password");