我写了一个java调用.net web services,.net 返回的是一个xml document,我曾经采用axis来自动生成客户端的形式成功调用过,但是axis自动生成的代码可读性奇差,简直惨不忍睹。
所以我想有没有什么简化操作,自己做了点尝试,发现返回类型转换总是不成功,谁能,不胜感激!
[code]
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.w3c.dom.Document;
/**
* @author Liujj
* Date 2007-1-18 <br>
* Description: <br>
* TestUserService
*/
public class TestUserService {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
// String wsdlUrl = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx?op=getUserInfo";
// String nameSpaceUri = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx";
String wsdlUrl = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx?op=getUserInfo";
String soapActionURI = "http://research.beyondbit.com/Centralism/getUserInfo";
// 创建调用对象
Service service = new Service();
Call call = (Call) service.createCall();
// 调用getUserInfo
System.out.println(">>>getUserInfo");
//xmlns
call.setOperationName(new QName("http://research.beyondbit.com/Centralism", "getUserInfo"));
call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
//parameter & return
call.addParameter("ldapStr", org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.addParameter("attrNames", org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_ANY);
//set soap action
call.setUseSOAPAction(true);
call.setSOAPActionURI(soapActionURI);
//call
String ret = (String) call.invoke(new Object[] { "d61b29051cd534458c0cdd16bdab77aa" , "" });
System.out.println("return value is " + ret);
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/code]
所以我想有没有什么简化操作,自己做了点尝试,发现返回类型转换总是不成功,谁能,不胜感激!
[code]
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.w3c.dom.Document;
/**
* @author Liujj
* Date 2007-1-18 <br>
* Description: <br>
* TestUserService
*/
public class TestUserService {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
// String wsdlUrl = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx?op=getUserInfo";
// String nameSpaceUri = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx";
String wsdlUrl = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx?op=getUserInfo";
String soapActionURI = "http://research.beyondbit.com/Centralism/getUserInfo";
// 创建调用对象
Service service = new Service();
Call call = (Call) service.createCall();
// 调用getUserInfo
System.out.println(">>>getUserInfo");
//xmlns
call.setOperationName(new QName("http://research.beyondbit.com/Centralism", "getUserInfo"));
call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
//parameter & return
call.addParameter("ldapStr", org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.addParameter("attrNames", org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_ANY);
//set soap action
call.setUseSOAPAction(true);
call.setSOAPActionURI(soapActionURI);
//call
String ret = (String) call.invoke(new Object[] { "d61b29051cd534458c0cdd16bdab77aa" , "" });
System.out.println("return value is " + ret);
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/code]