java处理.net webService传回的DataSet对象
2011-04-08 10:19
99 查看
总的流程是:
1、取得.Net WebService传过来的DataSet对象;
2、将DataSet对象用schema接收
3、把这个schema对象写入到一个xml文件中
4、解析xml文件,并把解析出来的数据封装成java里的entity
package webSerivce;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.SOAPException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.MessageElement;
import org.apache.axis.message.SOAPHeaderElement;
import org.apache.axis.types.Schema;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.entity.CardInfo;
/**
* 测试GetHotelInfoList
*/
public class GetCardInfoTest2 {
private String endpoint = "http://113.57.135.78/DataEngine/wsDataEngineForWebsite.asmx?wsdl";
public CardInfo getCardInfo() throws MalformedURLException,
ServiceException, RemoteException{
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://tempuri.org/GetCardInfo");
call.setOperationName(new QName("http://tempuri.org/","GetCardInfo"));
call.addParameter(new QName("http://tempuri.org/","CardNo"), org.apache.axis.encoding.XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter(new QName("http://tempuri.org/","Password"), org.apache.axis.encoding.XMLType.XSD_STRING,ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_SCHEMA);//在这里设置webService返回的数据类型
SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("http://tempuri.org/", "WSAuthHeader");
soapHeaderElement.setNamespaceURI("http://tempuri.org/");
try{
soapHeaderElement.addChildElement("UserName").setValue("admin");
soapHeaderElement.addChildElement("Password").setValue("123");
call.addHeader(soapHeaderElement);
} catch (SOAPException e) {
e.printStackTrace();
}
call.addHeader(soapHeaderElement);
Object res = (Object) call.invoke(new String[]{"1234","1234"});
Schema schema = (Schema)res;
MessageElement[] msgele = schema.get_any();
List FOCElementHead = msgele[0].getChildren();//消息头,DataSet对象
List FOCElementBody = msgele[1].getChildren();//消息体信息,DataSet对象
if (FOCElementBody.size() <= 0){
System.out.println("无消息体");
}
String nn = FOCElementBody.get(0).toString();//消息体的字符串形式
try {
this.saveXMLString(nn,"c://test.xml");//保存为XML形式
this.parserXml("c://test.xml");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 把读出来的xml数据写成文件,以便下一步解析的时候用
*/
private void saveXMLString(String XMLString, String fileName)throws IOException {
File file = new File(fileName);
if (file.exists()) {
file.delete();
}
file.createNewFile();
if (file.canWrite()) {
FileWriter fileOut = new FileWriter(file);
fileOut.write(XMLString);
fileOut.close();
}
}
/**
* 解析xml文件
*/
private void parserXml(String fileName) throws MalformedURLException {
CardInfo cardInfo = new CardInfo();
File inputXml = new File(fileName);
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(inputXml);
Element node1 = document.getRootElement();
List<String> param = new ArrayList<String>();
//遍历xml文件
for (Iterator i = node1.elementIterator(); i.hasNext();) {
Element node2 = (Element) i.next();
Iterator node = node2.elementIterator("no");
Element ele = (Element) node.next();
for (Iterator j = node2.elementIterator(); j.hasNext();) {
Element node3 = (Element) j.next();
System.out.println(node3.getName() + ":" + node3.getText());
param.add(node3.getText());//把元素装入一个数组
}
}
//在这里 将param数组里的元素封装到entity里
} catch (DocumentException e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] args){
GetCardInfoTest2 test = new GetCardInfoTest2();
try {
test.getCardInfo();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
}
}
}
1、取得.Net WebService传过来的DataSet对象;
2、将DataSet对象用schema接收
3、把这个schema对象写入到一个xml文件中
4、解析xml文件,并把解析出来的数据封装成java里的entity
package webSerivce;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.SOAPException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.MessageElement;
import org.apache.axis.message.SOAPHeaderElement;
import org.apache.axis.types.Schema;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.entity.CardInfo;
/**
* 测试GetHotelInfoList
*/
public class GetCardInfoTest2 {
private String endpoint = "http://113.57.135.78/DataEngine/wsDataEngineForWebsite.asmx?wsdl";
public CardInfo getCardInfo() throws MalformedURLException,
ServiceException, RemoteException{
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://tempuri.org/GetCardInfo");
call.setOperationName(new QName("http://tempuri.org/","GetCardInfo"));
call.addParameter(new QName("http://tempuri.org/","CardNo"), org.apache.axis.encoding.XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter(new QName("http://tempuri.org/","Password"), org.apache.axis.encoding.XMLType.XSD_STRING,ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_SCHEMA);//在这里设置webService返回的数据类型
SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("http://tempuri.org/", "WSAuthHeader");
soapHeaderElement.setNamespaceURI("http://tempuri.org/");
try{
soapHeaderElement.addChildElement("UserName").setValue("admin");
soapHeaderElement.addChildElement("Password").setValue("123");
call.addHeader(soapHeaderElement);
} catch (SOAPException e) {
e.printStackTrace();
}
call.addHeader(soapHeaderElement);
Object res = (Object) call.invoke(new String[]{"1234","1234"});
Schema schema = (Schema)res;
MessageElement[] msgele = schema.get_any();
List FOCElementHead = msgele[0].getChildren();//消息头,DataSet对象
List FOCElementBody = msgele[1].getChildren();//消息体信息,DataSet对象
if (FOCElementBody.size() <= 0){
System.out.println("无消息体");
}
String nn = FOCElementBody.get(0).toString();//消息体的字符串形式
try {
this.saveXMLString(nn,"c://test.xml");//保存为XML形式
this.parserXml("c://test.xml");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 把读出来的xml数据写成文件,以便下一步解析的时候用
*/
private void saveXMLString(String XMLString, String fileName)throws IOException {
File file = new File(fileName);
if (file.exists()) {
file.delete();
}
file.createNewFile();
if (file.canWrite()) {
FileWriter fileOut = new FileWriter(file);
fileOut.write(XMLString);
fileOut.close();
}
}
/**
* 解析xml文件
*/
private void parserXml(String fileName) throws MalformedURLException {
CardInfo cardInfo = new CardInfo();
File inputXml = new File(fileName);
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(inputXml);
Element node1 = document.getRootElement();
List<String> param = new ArrayList<String>();
//遍历xml文件
for (Iterator i = node1.elementIterator(); i.hasNext();) {
Element node2 = (Element) i.next();
Iterator node = node2.elementIterator("no");
Element ele = (Element) node.next();
for (Iterator j = node2.elementIterator(); j.hasNext();) {
Element node3 = (Element) j.next();
System.out.println(node3.getName() + ":" + node3.getText());
param.add(node3.getText());//把元素装入一个数组
}
}
//在这里 将param数组里的元素封装到entity里
} catch (DocumentException e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] args){
GetCardInfoTest2 test = new GetCardInfoTest2();
try {
test.getCardInfo();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
}
}
}
相关文章推荐
- java处理.net webService传回的DataSet对象
- java处理.net webService传回的DataSet对象
- java使用AXIS调用.net的webservice的小说明(webservice方法里含有对象)
- java访问.net webservice返回对象操作
- WebService处理.net中Dataset问题解决办法
- Java平台调用.net开发的WebService报错处理
- JAVA调用.NET WebService终极方案(包含对SoapHeader的处理)
- .net与java 使用自定义对象通过WebService调用
- java 跟.net webservice 互通问题(2)
- .Net 垃圾回收和大对象处理
- .net和JAVA面向对象,继承有趣的细节
- 越深入java 就觉得java做得越烂,java设计问题 之 :关于1.5,1.6 java处理基本对象类型cache的问题
- JAVA如何调用.NET开发的WebService
- Java实现对象转换成Map以及类型处理
- java利用axis2调用.net写的webservice,传递自定义的实体类参数
- .Net 垃圾回收和大对象处理 内存碎片整理
- Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 转
- .Net调用Java的WebService之亲身体验 (转自梦幻Dot Net)
- .net与java建立WebService再互相调用
- 记录一个.net平台下动态调用webservice的处理类(动态编辑请求soap信息)