+ -
当前位置:首页 → 问答吧 → java调用webservice用户验证问题

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传入用户名和密码啊,如能贴出详细代码,不胜感激!

作者: 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生成客户端,上面是调用的代码。也用到了用户名、密码验证。

作者: zouchuangzhi   发布时间: 2010-10-13