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


    摘自:http://www.360doc.com/showWeb/0/0/56113730.aspx

    .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://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的对象

  • 相关阅读:
    实习第一周小记------生活不易
    第一次实习面试感受----苦逼程序员生活初体验
    第一次实习面试感受----苦逼程序员生活初体验 分类: 程序人生 2013-07-28 14:13 2395人阅读 评论(0) 收藏
    Java-基于JDK的动态代理
    JS字符串去替换元素再转换成数组
    byte溢出栗子
    Java链式写法
    Scala笔记
    Java反射使用方法
    Java数组3种创建方式
  • 原文地址:https://www.cnblogs.com/angells/p/1834182.html
Copyright © 2020-2023  润新知