我希望有人可以帮助我。我被要求创建一个客户端来调用Web服务,但Web服务的开发人员不太乐于助人并提供了很少的信息。
我已经在NetBeans中创建了服务客户端,并且我已经添加了一个处理程序(来自我见过的示例),以便为基本身份验证设置用户名和密码。但是,当我运行项目时,我被告知身份验证失败,所以要么我发送了错误的信息,要么我需要做更多的事情。我真正不理解的是:Web服务的开发人员说标题应该如下所示,所以有人能告诉我我是如何实现的,还是这一切都是为我完成的?
POST https:// ...
Accept-Encoding:gzip,deflate
Content-Type:text / xml; charset = UTF-8
SOAPAction:“”
授权:基本MjAwKKAwNjAwMTpQcjBlZSRza!:uYWw =
内容长度:848
主持人:......
连接:Keep-Alive
User-Agent:Apache-HttpClient / 4.1.1
提前感谢,
答案 0 :(得分:0)
您可以使用BindingProvider为基本身份验证设置用户名密码。例如。
Service service = Service.create(url, qname);
HelloWorld hello = service.getPort(HelloWorld.class);
/******************* Set UserName and Password ******************************/
Map<String, Object> req_context = ((BindingProvider)hello).getRequestContext();
req_context.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WS_URL);
Map<String, List<String>> headers = new HashMap<String, List<String>>();
headers.put("Username", Collections.singletonList("yogesh"));
headers.put("Password", Collections.singletonList("patil"));
req_context.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
/**********************************************************************/
另请查看此thread以获取更多帮助。