龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

asp.net与java之间web Service的创建和调用

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=97301threadID=38818tstart=0 一直没有时间将这个东西贴出来,最近翻阅的时候才发现,只写了使用java语言编写的web service被.net所调用的部分,而没有写使用

http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=97301&threadID=38818&tstart=0

一直没有时间将这个东西贴出来,最近翻阅的时候才发现,只写了使用java语言编写的web service被.net所调用的部分,而没有写使用c#编写的web service被java程序所调用的部分

,所以现在将这篇文章贴出来,希望对大家有所帮助.

作者:duansiyang


二、使用c#编写的web service被java程序所调用

-----首先我们先要在visual studio .net 2003中创建一个web service。当然,如果你已经有了,那么你可以跳过此步骤-----

(1) 文件->新建->项目(小弟使用的是中文版,英文版的读者请谅解)
(2) 项目类型选择visual c#项目,然后在右边选择asp.net Web服务,输入项目位置为http://localhost/ASPWebService
(3) 单击 确定 创建工程.
(4) 在右边的解决方案资源管理器当中选择ASPWebService,单击右键,选择添加->添加Web服务选项
(5) 输入TestService.asmx。
(6) 在其代码视图中,输入下面的代码

//带参数的web service ,计算两数的和.
[WebMethod]
[SoapRpcMethod

(Action="http://www.duansiyang.com/Rpc",RequestNamespace="http://www.duansiyang.com/SU",ResponseNamespace="http://www.duansiyang.com/SU")]
   public long counter(long a ,long b)
   {
return a+b;
   }


//无参数的web service ,产生一个0-1之间的随机数.
[WebMethod]
[SoapRpcMethod

(Action="http://www.duansiyang2.com/Rpc",RequestNamespace="http://www.duansiyang2.com/SU",ResponseNamespace="http://www.duansiyang2.com/SU")]
   public double randomNumber()
   {
Random rad = new Random(1);
Double radnext = rad.NextDouble();
return radnext;

   }


(7) 同时你需要引用一个命名空间
using System.Web.Services.Protocols;
(8) 编译此工程。



-----接下来我们先要在Jbuilder中创建一个调用的servlet。当然,如果jsp也可以。我们紧紧是为了举例-----

(1)新建一个工程(^_^大家应该很熟悉了,我就不说了)
(2)创建一个web Module
(3)创建一个Servlet,取名为TestASPWebSvrServlet.
(4)加入下面的代码
try {
            Long i = new Long(1);
            Long j = new Long(2);
            String endpoint =
                    "http://localhost/ASPWebService/TestService.asmx";
            Service service = new Service();
            Call call = (Call) service.createCall();
            call.setTargetEndpointAddress(new java.net.URL(endpoint));
            call.setOperationName(new QName("http://www.duansiyang.com/SU", "counter"));
            call.addParameter("a", org.apache.axis.encoding.XMLType.XSD_DATE,
                              javax.xml.rpc.ParameterMode.IN);
            call.addParameter("b", org.apache.axis.encoding.XMLType.XSD_DATE,
                              javax.xml.rpc.ParameterMode.IN);
            call.setReturnType(org.apache.axis.encoding.XMLType.XSD_LONG);
            call.setUseSOAPAction(true);
            call.setSOAPActionURI("http://www.duansiyang.com/Rpc");
            Long k = (Long) call.invoke(new Object[] {i, j});
            System.out.println("result is " + k.toString() + ".");
        } catch (Exception e) {
            System.err.println(e.toString());
        }
       
       
        try {
          
            String endpoint =
                    "http://localhost/ASPWebService/TestService.asmx";
            Service service = new Service();
            Call call = (Call) service.createCall();
            call.setTargetEndpointAddress(new java.net.URL(endpoint));
            call.setOperationName(new QName("http://www.duansiyang2.com/SU", "total"));
            call.setReturnType(org.apache.axis.encoding.XMLType.XSD_DOUBLE);
            call.setUseSOAPAction(true);
            call.setSOAPActionURI("http://www.duansiyang2.com/Rpc");
            Double k = (Double) call.invoke(new Object[0]);
            System.out.println("result is " + k.toString() + ".");
        } catch (Exception e) {
            System.err.println(e.toString());
        }

(5)你同时需要导入下面的包
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.util.Date;
import java.text.DateFormat;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
(6)运行,然后你可以看到结果了。

精彩图集

赞助商链接