分享

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

 雨忆 2008-03-10
.net与java 使用自定义对象通过WebService调用 你知道 Ailiss.com 吗?
2007年12月25日 星期二 18:14

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

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

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

 

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

        public string   IdentityNumber
        
...{
            
get...{ return m_IdentityNumber; }
            
set...{ m_IdentityNumber = value; }
         }

        
private string   m_IdentityNumber;

        
}

 

在WebService中发布:

 

[WebMethod]
         [SoapRpcMethod
              (Action
="http:///GetUserInfoByPerson",
              RequestNamespace
="http://",
              ResponseNamespace
="http://")
         ]
        
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://", "GetUserInfoByPerson"));//设置请求的命名空间及方法名
             String str = "http://localhost/test/testservice.asmx";//web服务的URL地址
             call.setTargetEndpointAddress(new java.net.URL(str));
             call.setUseSOAPAction(
true);
             call.setSOAPActionURI(
"http:///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的对象

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多