关于axis2-1.6.2中的basic authentication

axis2-1.6.2有所变化, 使用WSDL2Java选择ADB binding方式生成的代理类全都放在XXXStub内部, 作为内部类. 也许这样在java的IDE中看起来比较干净简洁吧.

但是当我调用XXXStub时, 发现提供basic用户和密码验证的代码部分
String endpoint = "http://localhost:8080/mcr.httpbasic/services/GovObjStatsService";
GovObjStatsServiceStub stub = new GovObjStatsServiceStub("endpoint");
ServiceClient client = stub._getServiceClient();
Options options = client.getOptions();
HttpTransportProperties.Authenticator
auth = new HttpTransportProperties.Authenticator();
auth.setUsername("admin");
auth.setPassword("123456");
options.setProperty(HTTPConstants.AUTHENTICATE, auth);
...

居然没起作用, 仍然返回error 401. 于是查看生成的XXXStub类和Aixs2的源代码, 原来生成的XXXStub没有override Stub类, ._getServiceClient() 获得的ServiceClient和XXXStub里面create的ServiceClient不是同一个. 所以即使传入autherticator也不好使.

解决方法如下, 我们可以在XXXStub中修改一下, 在它createClient的方法中多传入一个参数, 既把authenticator传进去就可以了, 修改如下, 黑色字体为修改部分.

public com.tibco.governance.mcr.stats.api.GovObjStatsServiceStub.GetGovernedObjectStatsByFiltersResponse getGovernedObjectStatsByFilters(
com.tibco.governance.mcr.stats.api.GovObjStatsServiceStub.GetGovernedObjectStatsByFilters getGovernedObjectStatsByFilters0,
[b]HttpTransportProperties.Authenticator auth[/b]) throws java.rmi.RemoteException, com.tibco.governance.mcr.stats.api.AdminExceptionException{

org.apache.axis2.context.MessageContext _messageContext = null;
try{
org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(_operations[0].getName());
_operationClient.getOptions().setAction("urn:getGovernedObjectStatsByFilters");
_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);

[b]_operationClient.getOptions().setProperty(HTTPConstants.AUTHENTICATE, auth);[/b]
...
...

调用XXXStub的代码如下

String endpoint = "http://localhost:8080/mcr.httpbasic/services/GovObjStatsService";
GovObjStatsServiceStub stub = new GovObjStatsServiceStub("endpoint");
[b]HttpTransportProperties.Authenticator
auth = new HttpTransportProperties.Authenticator();
auth.setUsername("admin");
auth.setPassword("123456");[/b]
GetGovernedObjectStatsByFilters request = new GetGovernedObjectStatsByFilters();

... // new and set params to request

GetGovernedObjectStatsByFiltersResponse response =
stub.getGovernedObjectStatsByFilters(request[b], auth[/b]);

System.out.println("Count = " + response.get_return().getResultCount());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值