【问题标题】:setting header info in java web service client在 Java Web 服务客户端中设置标头信息
【发布时间】:2015-02-18 12:10:15
【问题描述】:

我希望有人可以帮助我。我被要求创建一个客户端来调用 Web 服务,但是 Web 服务的开发人员没有提供什么帮助,并且提供的信息很少。

我在 NetBeans 中创建了服务客户端,并添加了一个处理程序(来自我看到的示例),以便为基本身份验证设置用户名和密码。但是,当我运行该项目时,我被告知身份验证失败,所以要么我发送了错误的信息,要么我需要做更多的事情。我真正不明白的是:Web 服务的开发人员说标头应该如下所示,那么谁能告诉我我是如何实现的,或者这一切都为我完成了吗?

发布 https:// …

接受编码:gzip,deflate

内容类型:text/xml;charset=UTF-8

SOAPAction: ””

授权:基本 MjAwKKAwNjAwMTpQcjBlZSRza!:uYWw=

内容长度:848

主持人:……

连接:保持活动状态

用户代理:Apache-HttpClient/4.1.1

提前致谢,

【问题讨论】:

  • 在创建服务的netbeans向导中,是否有'authentication'选项?
  • 嗨,Richard,是的,它是从 wsdl 在 netbeans 中自动生成的,所以如果有帮助,它会使用 jax-ws?
  • 是的,抱歉。我编辑了我的评论......当您生成客户端时,在 Netbeans 的选项中,它是否为您提供了“身份验证”选项?也许您需要重新生成客户端?
  • 不,我没有那个选项。我会尝试重新生成,但是要求的其他标头信息呢?
  • 只有“授权”标头在那里很重要。尝试在 netbeans 中找到在向导中输入用户名和密码的位置。一旦你完成了,再试一次。我怀疑您的下一个问题将是 SSL 证书。

标签: java netbeans webservice-client


【解决方案1】:

您可以使用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 以获得更多帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2010-11-26
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    相关资源
    最近更新 更多