java webservice 登录_java调用第三方webservice(需要登录验证)

本文介绍了在Java中如何调用需要登录验证的.NET Webservice。作者尝试了使用Axis2和CXF两种方式,最终通过CXF成功实现了身份验证并调用了服务。
摘要由CSDN通过智能技术生成

最近研究了java调用第三方webservice的几种方法,方式很多,主要卡在登录验证上。

webservice是有iis中的.net程序提供的。在iis中设置了登录验证,浏览器输入http://192.168.100.108/InspectService/InspectService.asmx

弹出登录窗口

输入iis中设置的用户名密码,即可进入

了解到java调用webservice的几种方式,我选择了axis2,使用wsdl2java生成客户端代码,然后直接调用,很方便

InspectServiceStub.TestConnection t=new InspectServiceStub.TestConnection();

System.out.println(stub.testConnection(t).getTestConnectionResult());

调用还不行,还需要登录,在这一步的时候,查阅了很多资料,无非是使用这种方式

ServiceClient sc = stub._getServiceClient();

Options opts = sc.getOptions();

opts.setTo(new

EndpointReference("http://192.168.100.108/InspectService/InspectService.asmx"));

HttpTransportProperties.Authenticator basicAuth = new

HttpTransportProperties.Authenticator();

// AuthPolicy.registerAuthScheme(AuthPolicy.NTLM, BackportedNTLMScheme.class);

basicAuth.setUsername("username");

basicAuth.setPassword("password");

List authPrefs = new ArrayList(1);

authPrefs.add(AuthPolicy.NTLM);

basicAuth.setAuthSchemes(authPrefs);

opts.setProperty(HTTPConstants.AUTHENTICATE, basicAuth);

//调用方法TestConnection

InspectServiceStub.TestConnection t=new InspectServiceStub.TestConnection();

System.out.println(stub.testConnection(t).getTestConnectionResult());

大部分人也是这样写的。但是在自己的测试中总是通不过,放弃

关于调用不成功的,看了一些人的说法:http://codego.net/295434/

使用cxf

通过wsdl2java生成客户端代码,下面是调用

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

factory.setServiceClass(InspectService.class);

factory.setAddress("http://192.168.100.108/InspectService/InspectService.asmx");

factory.setUsername("username");

factory.setPassword("password");

InspectService s = (InspectService) factory.create();

System.out.println("connection result:"+s.testConnection());测试通过

参考:http://blog.sina.com.cn/s/blog_6556038f0101dkem.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值