在java Web服务客户端中设置头信息

时间:2015-02-18 12:10:15

标签: java netbeans webservice-client

我希望有人可以帮助我。我被要求创建一个客户端来调用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

提前感谢,

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以获取更多帮助。