.net与java 使用自定义对象通过WebService调用

本文介绍了一种通过 WebService 在 .NET 和 Java 平台间传递自定义对象的方法。详细展示了如何定义序列化/反序列化的 Person 对象,并在 Java 客户端成功调用 .NET 服务获取对象实例。

之前使用.net 和Java通过Web Service调用,都是传递的简单类型。最近由于项目需要,需要之间传递自定义对象 

做了一个简单的例子,可以调用成功。

在。net中定义一个简单对象

 

public class Person
{
        
        
/// <summary>
        
/// 身份证件号码
        
/// </summary>

        public string  IdentityNumber
        
{
            
getreturn m_IdentityNumber; }
            
set{ m_IdentityNumber = value; }
        }

        
private string  m_IdentityNumber;

        
}

 

在WebService中发布:

 

[WebMethod]
        [SoapRpcMethod
             (Action
="http://tempurl.org/GetUserInfoByPerson",
             RequestNamespace
="http://tempurl.org",
             ResponseNamespace
="http://tempurl.org")
        ]
        
public Person GetUserInfoByPerson()
        
{
            Person p 
= new Person();
            p.IdentityNumber 
="1234234342";
    

            
return p;
        }

 

注意在使用Java客户端调用的时候,要导入6个jar的包:axis.jar,commons-discovery-0.2.jar,commons-logging-1.0.4.jar,jaxrpc.jar,saaj.jar,wsdl4j-1.5.1.jar

在java客户端,注册自定义对象的序列化/反序列化器。

核心代码如下:

 


import java.io.Serializable;


public class Person implements Serializable {   
    
/**    *     */    
    
    
public Person() {        }

    
private static final long serialVersionUID = -6414428095965735488L

    
public String  IdentityNumber;
    
        
}


调用的代码:

 

//注册Person的序列化类型    
            QName qn = new QName("Person");    
            call.registerTypeMapping(Person.
class, qn,    new BeanSerializerFactory(Person.class, qn),    new BeanDeserializerFactory(Person.class, qn));

call.setOperationName(
new QName("http://tempurl.org""GetUserInfoByPerson"));//设置请求的命名空间及方法名
            String str = "http://localhost/test/testservice.asmx";//web服务的URL地址
            call.setTargetEndpointAddress(new java.net.URL(str));
            call.setUseSOAPAction(
true);
            call.setSOAPActionURI(
"http://tempurl.org/GetUserInfoByPerson");//设置SOAPAction

    call.setReturnClass(Person.
class);
            Person p 
= (Person)call.invoke(new Object[]{s});
            
            System.out.println(
"Get WebServices result is: "+p);
            System.out.println(
"Get WebServices result is: "+p.IdentityNumber);

 

在Java客户端可以获取Person的对象

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值