[Java] 利用Axis库调用C#的Web Service
2005-08-02 11:24
281 查看
[Java] 利用Axis库调用C#的Web Service
编写者 | 日期 | 关键词 |
郑昀@ultrapower | 2005-8-2 | Java Web Service Axis C# |
概述
试图从Java调用C#编写的Web Service,借用了王咏刚的wsCaller源代码中DynamicInvoker类。开始不清楚DynamicInvoker类的portName的含义,望文生义,以为是8080之类的端口号,实际上是下面wsdl中的wsdl:port 节点的“name”属性值“ReadWordSoap”:
wsdl提示: |
<wsdl:service name="ReadWord"> <documentation xmlns="http://schemas.xmlsoap.org/wsdl/">提供Office文档的有选择性地读取文本服务.</documentation> <wsdl:port name="ReadWordSoap" binding="tns:ReadWordSoap"> <soap:address location="http://192.168.1.113/ReadOffice/ReadWord.asmx" /> </wsdl:port> </wsdl:service> |
Jar[/b]包[/b][/b] | 对应的库[/b][/b] | 用途[/b][/b] |
Axis.jar[/b] | org.apache.axis.*[/b] | [/b] |
wsdl4j-1.5.1.jar[/b] | javax.wsdl.*[/b] | wsdl[/b]操作[/b][/b] |
jaxrpc.jar[/b] | javax.xml.rpc.*[/b] | xml.rpc[/b] |
commons-discovery-0.2.jar[/b] | [/b] | discovery[/b] |
log4j-1.2.11.jar[/b] | [/b] | Axis[/b]需要[/b]log4net[/b] |
commons-logging.jar[/b] | [/b] | Axis[/b]需要[/b]LogFactory[/b] |
saaj.jar[/b] | [/b] | 引入[/b]SOAP[/b] |
演示代码
请求一个C#编写的Web Service,利用DynamicInvoker类遍历web service每一个方法,获取serverName、参数列表以及类型。代码演示: |
import java.util.Map; import java.util.Vector; import java.util.Iterator; import java.util.Arrays; import org.apache.axis.wsdl.symbolTable.*; public class wsCaller { /** * @param args */ public static void main(String[] args) { String wsdlLocation = "http://192.168.1.113/ReadOffice/ReadWord.asmx?wsdl"; String serviceName = "ReadWord"; String operationName = "read"; String strFirstParam = "c:\\nlb.log"; String strSecondParam = "0"; String strThirdParam = "200"; String portName = "ReadWordSoap"; /* * 添加web service方法的输入参数到Vector */ Vector parameterValues = new Vector(); parameterValues.addElement(strFirstParam); parameterValues.addElement(strSecondParam); parameterValues.addElement(strThirdParam); try { DynamicInvoker invoker = new DynamicInvoker(wsdlLocation); /* * 遍历web service每一个方法,获取serverName、参数列表以及类型的过程 */ Vector vServices = invoker.enumServiceNames(); Object[] Services = vServices.toArray(); Arrays.sort(Services); for (int i = 0; i < Services.length; i++) { String strServiceName = (String) Services[i]; System.out.println("ServiceName=" + serviceName); Vector V = invoker.enumPortNames(strServiceName); String strPortName = (String) V.elementAt(0); System.out.println("PortName=" + strPortName); V = invoker.enumOperationNames(strServiceName, strPortName); Object[] OperationNames = V.toArray(); Arrays.sort(OperationNames); for (int j = 0; j < OperationNames.length; j++) { String strOperationName = (String) OperationNames[j]; System.out.println("\t" + (String) OperationNames[j]); Parameters parameters = invoker.enumParameters(strServiceName, strPortName, strOperationName); Vector v = parameters.list; Vector vParameterValues = new Vector(); for (int k = 0; k < v.size(); k++) { Parameter para = (Parameter) v.elementAt(k); System.out.print("\t\t" + para.getQName().getLocalPart()); if (para.getType().getQName().getLocalPart().equals("string")) { vParameterValues.addElement("asdasdas"); } else { vParameterValues.addElement(null); } System.out.print("\t" + para.getType().getQName().getLocalPart()); System.out.println("\t" + invoker.getParameterModeString(para)); } } } // 最后一个参数是调用web service的超时时间,这个原来是固化在类里面的 // 但其实应该暴露出来 Map map = invoker.invoke(serviceName, portName, operationName, parameterValues, new Integer(60 * 1000)); // print result System.out.println("Result:"); for (Iterator it = map.keySet().iterator(); it.hasNext();) { String name = (String) it.next(); System.out.println(name + "=" + map.get(name)); } System.out.println("\nDone!"); } catch (Exception exc) { exc.printStackTrace(); } } } |
ServiceName=ReadWord
PortName=ReadWordSoap
read
>read>DocumentFilePath string [IN]
>read>begin int [IN]
>read>end int [IN]
Result:
>readResponse>readResult=0018
立此存照。
编写者 | 日期 | 关键词 |
郑昀@ultrapower | 2005-8-2 | Java Web Service Axis C# |
相关文章推荐
- [Java] 利用Axis库调用C#的Web Service
- [Java] 利用Axis库调用C#的Web Service
- [Java] 利用Axis库调用C#的Web Service
- [Java] 利用Axis库调用C#的Web Service
- VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法
- web service DEMO: C#提供web service,java进行调用asmx
- VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法
- C# 客户端 调用Java版的REST风格的web Service
- java调用.net(c#) dll(利用jacob)
- 【开发者笔记】java 利用jna调用c#的dll
- Java调用C#的web Service
- java基于Axis2调用C#开发的web service获取xml结果
- java调用webAPI(C#)的实例
- C#使用Http Post方式传递Json数据字符串调用Web Service
- C#中利用process类调用外部程序以及执行dos命令
- java与.net的web service相互调用
- C#调用java代码
- 用C#程序调用java程序
- JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯
- 使用Java调用以WSDL形式发布的web service