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的对象

  • 相关阅读:
    QT 中如何实现一个简单的动画
    qt 中画线时如何设置笔的颜色和填充
    QT自定义窗口
    qt 中创建一个工作线程(例子)
    QT 获取系统时间
    火狐浏览器 system error code 1722 rpc服务器不可用和谷歌浏览器的插件application/x-print-ladop不支持
    ORA-10858:在要求输入数字处找到非数字字符
    eaeyui-combobox实现组合查询(即实现多个值得搜索)
    Mybatis中的模糊查询
    如何设置像我这样的博客的样式。
  • 原文地址:https://www.cnblogs.com/angells/p/1834182.html
Copyright © 2011-2022 走看看