已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java调用.net写的webservice2Java使用axis来调用.net写的asmx WebService,大体步骤如下。Axis需要用到的包如下:1. axis.jar2. commons-discovery-0.2.jar3. commons-logging-1.0.4.jar4. jaxrpc.jar5. wsdl4j-1.5.1.jarjava调用的代码如下:.net webService的GetSafeMode方法 WebMethod public string GetSafeMode(string factoryId, string simId) . return “0”; 上面的例子演示了怎样传递参数和接收返回值,传递string类型的数据。下面看看怎么解决传递Dataset的问题。(以下为转贴)原文地址:/blog/325610版权归原文作者所有package etpsmsws.etpsms.hnas; import java.util.Iterator; import space.QName; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.message.MessageElement; import org.apache.axis.types.Schema; /* * * Title: * * * Description: * * * Copyright: Copyright (c) 2004 * * * Company: * * * author not attributable * version 1.0 */ public class testSoap2 public testSoap2() public static void main(String args) try String wsdlUrl = http:/test; String soapActionURI = HNAS.EtpSms.EtpSmsWS/GetRecvFromTemp; Service service = new Service(); Call call = (Call) service.createCall(); / / call.setOperationName(new QName(HNAS.EtpSms.EtpSmsWS, / EtpSmsWSSoap); call.setOperationName(new QName(HNAS.EtpSms.EtpSmsWS, GetRecvFromTemp); call.setTargetEndpointAddress(new .URL(wsdlUrl); call.addParameter(new QName(HNAS.EtpSms.EtpSmsWS, iMemberId), org.apache.axis.encoding.XMLType.XSD_INT, javax.xml.rpc.ParameterMode.IN); call.setReturnType(org.apache.axis.encoding.XMLType.XSD_SCHEMA); call.setUseSOAPAction(true); call.setSOAPActionURI(soapActionURI); Object objs = new Object 8918; Object res = call.invoke(objs); / System.out.println(res); Schema schema = (Schema) res; MessageElement messageElement = schema.get_any(); for (int i = 0; i messageElement.length; i+) / System.out.println(messageElementi.getChildElements(); / System.out.println(messageElementi.getRealElement() / .getChildren(); Iterator iterator = messageElementi.getChildElements(); while (iterator.hasNext() MessageElement m = (MessageElement) iterator.next(); m = m.getRealElement(); Iterator it = m.getChildElements(); while (it.hasNext() m = (MessageElement) it.next(); it = m.getChildElements(); while (it.hasNext() m = (MessageElement) it.next(); System.out.println(m.getValue(); catch (Exception ex) System.err.println(ex.toString(); 注意事项: 参数必须是String类型的,你定义的是啥类型不管。 setOperationName 要给方法名。 1. 概述 很多正在开发或者打算开发XML Web Services的程序员都问过这样的一个问题:我的Web Service返回的结果是一个DataSet类型的对象,但如果我的客户端不是用.NET写的(因而没有内建的DataSet类型), 那该如何调用这个Web Service并访问DataSet中的数据呢?。 对于这个问题,首先应该说的是:1)在多种语言共存的编程环境下,是不适合使用类似DataSet这种只属于特定语言的数据类型的。不管是在 XML Web Services还是CORBA的环境中,都应该尽量使用简单数据类型以及简单数据类型的数组。2)应当很谨慎的决定是否需要通过Web Service来返回大量数据。由于网络传输的开销既包括HTTP连接建立的时间,也包括传送数据的时间,因此需要在减少访问服务器次数和减少网络传输量 之间寻找一个合适的平衡。如非必须,则不适合通过Web Service传送含有几十条或者几百条数据的数据表。 然后,就问题本身而言,.NET Web Services返回的DataSet类型是可以直接被其他非.NET的客户端解析的,因为即便是DataSet类型的返回值,也会被表达成XML格式再 进行传输。下面的例子就是一个返回类型为DataSet的Web Method,及其被调用后返回的XML格式数据: 2. 创建.NET Web Services,返回数据集合 WebMethod public DataSet GetPersonTable(string str) . DataTable table = new DataTable(Person); table.Columns.Add(Name); table.Columns.Add(Gender); table.Rows.Add(new string2 . Alice, Female ); table.Rows.Add(new string2 . Bob, Male ); table.Rows.Add(new string2 . Chris, Female ); table.Rows.Add(new string2 . Dennis, Male ); table.Rows.Add(new string2 . Eric, Male ); DataSet dataset = new DataSet(PersonTable); dataset.Tables.Add(table); return dataset; 3. 在Java中调用.NET Web Services,处理返回的数据集合 try . String wsdlUrl = http:/localhost/WebSite1/Service.asmx?op=GetPersonTable; String soapActionURI = /GetPersonTable; Service service = new Service(); Call call = (Call) service.createCall(); / call.setOperationName(new QName(/,GetPersonTable); call.setTargetEndpointAddress(new .URL(wsdlUrl); call.addParameter(a, org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.setReturnType(org.apache.axis.encoding.XMLType.XSD_SCHEMA); call.setUseSOAPAction(true); call.setSOAPActionURI(soapActionURI); Object objs = new Object.ssss; Object res = call.invoke( objs ); System.out.println(res); Schema schema = (Schema)res; DefaultTableModel model=new DefaultTableModel(new S,gender,0); schema.get_any()1.getChildNodes().getLength(); int nLength=schema.get_any()1.getChildNodes().item(0).getChildNodes().getLength(); String name=N/A; String gender=N/A; for(int i=0;inLength;i+) . if(schema.get_any()1.getChildNodes().item(0).getChildNodes().item(i).getChildNodes().item(0).getNodeName().equals(Name) . name=schema.get_any()1.getChildNodes().item(0).getChildNodes().item(i).getChildNodes().item(0).getFirstChild().getNodeValue(); if(schema.get_any()1.getChildNodes().item(0).getChildNodes().item(i).getChildNodes().item(1).getNodeName().equals(Gender) . gender=schema.get_any()1.getChildNodes().item(0).getChildNodes().item(i).getChildNodes().item(1).getFirstChild().getNodeValue(); model.addRow(new S,gender); this.jScrollPane1.getViewport().add(jTable1, null); jTable1.setModel(model); catch (Exception ex) . System.err.println(ex.toString(); public String ValidateUser(String uId,String uPwd);需传2个参数,字符串类型的用户名和密码(需按顺序填写,以下同理)返回succ表明验证通过,fail表明验证不通过在java中调用如下:public static void main(String args) try String endpoint = 08:8080/Controls/services/UserInfo;/ip地址 Service service = new Service(); Call call = null; call = (Call) service.createCall(); call.setOperationName(new QName(endpoint, ValidateUser);/方法名 call.setTargetEndpointAddress(new .URL(endpoi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026贵州毕节职业技术学院“银龄教师”招募25人考前冲刺密卷含答案详解(A卷)
- 2026云南临沧云县零工市场临沧市易成实验学校医生招聘1人考前冲刺试卷及完整答案详解【易错题】
- 2026年下半年度上海市荣誉军人疗养院招聘8人考前冲刺密卷含完整答案详解(历年真题)
- 2026中国中煤能源集团有限公司江苏分公司第1次社会招聘8人考前冲刺试卷【培优A卷】附答案详解
- 2026河南安阳市滑县农业农村局招募特聘农技(防疫)员35人备考题库附参考答案详解【研优卷】
- 中医熨烫护理查房
- 烟叶税考试题目及参考答案
- 2025-2026学年四川省乐山市马边彝族自治县数学四年级下学期期末调研试题(含解析)
- 2026中国智能仓储机器人行业多关节机械臂优化设计及商业化推广计划
- 卡尺知识考试题目及答案
- 高考英语新课标3100词汇(音标·词性·多义·真题生义完整版)
- 广投智慧服务集团招聘笔试题库2026
- 结构构件焊接质量监督方案
- 医疗器械使用安全评估制度
- (2025年)事业单位遴选考试真题及答案
- 2026年国电南瑞行测笔试题库
- 2026中国人寿秋招笔试题及答案
- 房地产销售人员薪酬调整方案
- 2026年张掖市甘州区事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 十五五规划纲要解读:中药产业创新发展
- TTCCT004-2023智能云断路器技术规范
评论
0/150
提交评论