java调用webservice用户验证问题
时间:2010-10-12
来源:互联网
我现在需要写一个接口程序,程序需要调用一台监控设备的监控数据,监控设备提供了若干个webservice地址。
现在的问题是eclipse无法用提供的wsdl网址生成客户端,validation过不了,但用浏览器是可以正常访问这个地址的。
网上查了下可能是由于这个webservice是用.net编写的!
因此只能自己写client了,后来网上找了段代码:
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
Client client = new Client(new URL("http://192.168.1.12:9080/WS/services/getAlarmsInfo.wsdl"));
Object[] o = client.invoke("getAllAlarms",new String[]{"all"});
用这段代码可以访问这个webservice,返回值也可以得到,但监控设备提供的其它webservice用这种方式调用不了,报401错误,提示用户名密码错误,用浏览器直接访问webservice网址时确实出现提示要求输入用户名和密码,客户也提供给我们了。
我的问题在于怎么在client端中向webservice传入用户名和密码啊,如能贴出详细代码,不胜感激!
现在的问题是eclipse无法用提供的wsdl网址生成客户端,validation过不了,但用浏览器是可以正常访问这个地址的。
网上查了下可能是由于这个webservice是用.net编写的!
因此只能自己写client了,后来网上找了段代码:
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
Client client = new Client(new URL("http://192.168.1.12:9080/WS/services/getAlarmsInfo.wsdl"));
Object[] o = client.invoke("getAllAlarms",new String[]{"all"});
用这段代码可以访问这个webservice,返回值也可以得到,但监控设备提供的其它webservice用这种方式调用不了,报401错误,提示用户名密码错误,用浏览器直接访问webservice网址时确实出现提示要求输入用户名和密码,客户也提供给我们了。
我的问题在于怎么在client端中向webservice传入用户名和密码啊,如能贴出详细代码,不胜感激!
作者: WFreedom 发布时间: 2010-10-12
public DT_DECREASE_RES call(DT_DECREASE_REQ in) throws ServiceException{
DT_DECREASE_RES res = new DT_DECREASE_RES();
Map map = URLXMLParser.getURLXMLParser().getElement("FAC", "001");
SI_FAC_REDUCE_SYN_OUTBindingStub stub;
try {
String urlOut = "http://"+FileNameTools.getWtcConfigVu(FileNameTools.MULE_MULE_HOST)
+":"+FileNameTools.getWtcConfigVu(FileNameTools.MULE_MULE_POST)+"/"+map.get("url").toString();
String userName = FileNameTools.getWtcConfigVu(FileNameTools.MULE_MULE_USER);
String password = FileNameTools.getWtcConfigVu(FileNameTools.MULE_MULE_PASSWD);
SI_FAC_REDUCE_SYN_OUTServiceLocator service = new SI_FAC_REDUCE_SYN_OUTServiceLocator();
SI_FAC_REDUCE_SYN_OUT client = service.getSI_FAC_REDUCE_SYN_OUTPort(new URL(urlOut));
stub = (SI_FAC_REDUCE_SYN_OUTBindingStub) client;
stub.setUsername(userName);//用户名
stub.setPassword(password);//密码
res= stub.SI_FAC_REDUCE_SYN_OUT(in);
} catch (Exception e) {
throw new ServiceException(e);
}
return res;
}
我们公司是用AXIS2.0生成客户端,上面是调用的代码。也用到了用户名、密码验证。
DT_DECREASE_RES res = new DT_DECREASE_RES();
Map map = URLXMLParser.getURLXMLParser().getElement("FAC", "001");
SI_FAC_REDUCE_SYN_OUTBindingStub stub;
try {
String urlOut = "http://"+FileNameTools.getWtcConfigVu(FileNameTools.MULE_MULE_HOST)
+":"+FileNameTools.getWtcConfigVu(FileNameTools.MULE_MULE_POST)+"/"+map.get("url").toString();
String userName = FileNameTools.getWtcConfigVu(FileNameTools.MULE_MULE_USER);
String password = FileNameTools.getWtcConfigVu(FileNameTools.MULE_MULE_PASSWD);
SI_FAC_REDUCE_SYN_OUTServiceLocator service = new SI_FAC_REDUCE_SYN_OUTServiceLocator();
SI_FAC_REDUCE_SYN_OUT client = service.getSI_FAC_REDUCE_SYN_OUTPort(new URL(urlOut));
stub = (SI_FAC_REDUCE_SYN_OUTBindingStub) client;
stub.setUsername(userName);//用户名
stub.setPassword(password);//密码
res= stub.SI_FAC_REDUCE_SYN_OUT(in);
} catch (Exception e) {
throw new ServiceException(e);
}
return res;
}
我们公司是用AXIS2.0生成客户端,上面是调用的代码。也用到了用户名、密码验证。
作者: zouchuangzhi 发布时间: 2010-10-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28