zoukankan      html  css  js  c++  java
  • .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的对象

  • 相关阅读:
    softice 在winice中的安装 zt
    普通版和优秀版简历的20项对比
    今天又投了几家。。等啊。。。
    乱写
    反攻击技术综合分析报告
    今天投简历的公司
    #pragma 预处理指令详解
    黑客入侵无线网络常用手段
    ADODB.Stream漏洞
    利用TCP/IP的堆栈指纹的方法
  • 原文地址:https://www.cnblogs.com/angells/p/1834182.html
Copyright © 2011-2022 走看看