您的位置:首页 > 编程语言 > Java开发

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

2015-07-29 17:04 676 查看
最近研究了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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: