我有一个用JAX-WS开发的Web服务。我已经用Tomcat中配置的基本身份验证保护了web服务。
当我尝试使用Java客户端访问web服务时,首先需要创建端口,然后指定凭据,如下所示:
CustomerServiceClient customerServiceClient = new CustomerServiceBottomUpService(); //1
CustomerService customer = customerServiceClient.getCustomerServicePort(); //2
Map<String, Object> context = ((BindingProvider) customer).getRequestContext(); //3
context.put(BindingProvider.USERNAME_PROPERTY, "kermit"); //4
context.put(BindingProvider.PASSWORD_PROPERTY, "thefrog"); //5我遇到的问题是,在第1行之后,我得到了一个授权错误(HTTP 401),因为我显然还没有向服务器提供凭据。
我从服务器WSDL创建客户端构件,因此在创建服务时会出现身份验证问题,并且不希望我的客户端将WSDL存储在本地,因为这对它们来说很烦人。我怎样才能解决这个问题呢?
发布于 2010-10-01 03:32:09
BindingProvider.USERNAME_PROPERTY、BindingProvider.PASSWORD_PROPERTY主要用于服务请求。当您实例化Service时,它获取WSDL,服务器返回401。您可以尝试以下任何一种解决方案:
java.net.Authenticator类使用catalog.web.xml对WSDL进行本地访问,以允许在没有authentication.的情况下进行GET请求。
参考java.boot.by
https://stackoverflow.com/questions/3834044
复制相似问题