急,关于如何用java调用webservice接口的问题
我有结尾是 xxxxx.asmx的一个webservice地址,我如何在java程序里调用,向其中的一个方法传参数?谢谢 --------------------编程问答-------------------- 还有以asmx为后缀的webservice地址吗,没听说过
我在百度里面输入asmx提示出来的是'阿诗玛香烟' --------------------编程问答-------------------- 给你个dom解析的示例吧
--------------------编程问答-------------------- 我也刚写了一个星期的webservices
String url="xxx.asmx/方法名?参数名=参数"
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
org.w3c.dom.Document doc = builder.parse(url);
org.w3c.dom.NodeList list =doc.getElementsByTagName("Table");//具体什么标签要看对方的XML文件格式
//--后面就循环解析
访问xx.wsdl
http://xxxxx:8080/services/xxx?wsdl打开后页面另存为到盘符下并名为为xx.wsdl:如保存到D:\wsdl\xx.wsdl
得到客户端代码:
cmd
wsdl2java -uri D:\wsdl\xx.wsdl会得到一个src目录和一个build.xml文件
新建项目-->复制src替换新建项目的src,导入相应的包写测试类
AaStub sub = new AaStub();//这里是src下面的
AaStub.GetEPGinfo request = new AaStub.GetEPGinfo();//得到方法
request.setAppName("2");//给方法传入参数
request.setDate("2");//给方法传入参数
request.setSerialNo(100);//给方法传入参数
//给方法传入参数 这里得到是返回的是一个list用数组接收 如果你用的返回的
//是string就用string接收
Channel_item[] item=sub.getEPGinfo(request).get_return();
--------------------编程问答--------------------
Client client = new Client(new URL("http://localhost:8080/Xfire/services/MathService?wsdl"));
str=client.invoke("say",new Object[]{null});
say表示调用的方法名 后面是object数组最为参数 --------------------编程问答-------------------- wsgen命令可以根据WSDL生成客户端代码 --------------------编程问答-------------------- 是这样,我要调用的方法是SET_XMSP(String DeptId, String PassWord, XmlDocument query),其中XmlDocument这个类型java中没有对应的,我用axis调用,其中有一段代码是
all.addParameter(new QName(nameSpace, "Query"),XMLType.XSD_STRING, ParameterMode.IN);而XMLType.XSD_STRING这个变量类型没法和XmlDocument query对应,有什么号办法吗? --------------------编程问答-------------------- 我以前写过一个webservice的例子,有webservice的发布和调用,一看就能懂的。很清晰。
CSDN上有下载的,不懂就留言!
下载地址:http://download.csdn.net/detail/a_yyc1990/3511130 --------------------编程问答-------------------- 你好,你那个例子我下载了,但是还是不行,
public static void test2() {
// 定义返回字符串
String returnvalue = "";
String nameSpace = "http://www.scsc.cn/";
String wsdlUrl = "http://124.128.55.20:82/FOR_INTERFACE_SERVICE_SET.asmx";//请求服务的URL
// 创建一个服务(service)调用(call)
org.apache.axis.client.Service service = new org.apache.axis.client.Service();
Call call = null;
try {
// 通过service创建call对象
call = (Call) service.createCall();
// 设置service所在URL
call.setTargetEndpointAddress(wsdlUrl);
// 调用C#中的服务
call.setOperationName(new QName(nameSpace, "SET_XMJB"));// 设置请求的命名空间及方法名
// 设置参数
call.addParameter(new QName(nameSpace, "DeptID"),
XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter(new QName(nameSpace, "PassWord"),
XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter(new QName(nameSpace, "Query"),
XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://www.scsc.cn/SET_XMJB");// 设置SOAPAction
String a="11111";
String b="22222";
String c="<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>"
+ "<SET_XMJB xmlns=\"http://cn.scsc.sdgcjs/xsd\">"
+ "<INPUT count=\"0\">"
+ "<ROW>"
+ "<GUID>1</GUID>"
+ "<XMBH>1</XMBH>"
+ "<XMMC>1</XMMC>"
+ "<SPDW>1</SPDW>"
+ "<XMGK>1</XMGK>"
+ "<JSSJ>1</JSSJ>"
+ "<JSDW>1</JSDW>"
+ "<JSDWDM>1</JSDWDM>"
+ "<XMFR>1</XMFR>"
+ "<CJDW>1</CJDW>"
+ "<FBDW>1</FBDW>"
+ "<FBSJ>ddd</FBSJ>"
+ "<FLAG>1</FLAG>"
+ "</ROW>"
+ "</INPUT>"
+ "</SET_XMJB>";
Document document = DocumentHelper.parseText(c);
returnvalue = (String) call.invoke(new Object[] {a,b,c});
System.out.println(returnvalue);
现在的主要问题是 call.addParameter(new QName(nameSpace, "Query"),
XMLType.XSD_STRING, ParameterMode.IN);这句没法写,
接口方法是 SET_XMSP(String DeptId, String PassWord, XmlDocument query),XmlDocument 我没法用java中相关的类型对应,我尝试用dom4j 方法转换后类型也对应不上,现在不知道怎么解决了,是否能给个解决办法,谢谢了
--------------------编程问答-------------------- jdk bin 下有个命令可以对指定的 webservice 的url 生成 调用其的 客户端类方法。
网上这样的资源超级多啊
补充:Java , Web 开发