跨平台.NET Web服务调用示例

在多种编程语言或平台中调用.NET Web服务是一个常见需求。本文以Java Applet为例,展示了如何在网页中使用Java Applet,并让其与ASP.NET进行通信,通过调用XML Web服务在客户端处理数据。

尽管调用ASP.NET Web服务的原因多种多样,但本文的出发点是为了在ASP.NET应用程序中添加复杂的客户端图像处理功能。考虑到浏览器对JavaScript的不同实现,尤其是图像处理特性的差异,决定尝试使用Java 1.1编写客户端代码。Java Applet能够满足所有的图像处理需求,并且被许多浏览器支持。

问题与解决方案

接下来的问题是如何将Java Applet中处理的数据结果回传到ASP.NET应用程序。解决方案是创建一个ASP.NET Web服务,并在Java Applet中调用它。

简单示例

以下是一个非常基础的Web服务示例:

C# [ WebMethod ] public string ConcatWithSpace( string one, string two) { return one+ " " +two; }

如果需要向Web服务发送大量数据,如何在Java Applet中实现SOAP请求和响应?虽然使用更新的Java SDK可能有很多选项,但由于需要支持包括Internet Explorer在内的许多浏览器,使用的是Java 1.1 SDK。

为此,编写了一个名为SoapRequestBuilder的Java类,它简化了服务的调用并返回单个字符串响应。以下示例展示了如何调用上述Web服务:

Java SoapRequestBuilder s = new SoapRequestBuilder(); s.Server = " 127.0.0.1" ; // server ip address or name s.MethodName = " ConcatWithSpace" ; s.XmlNamespace = " http://tempuri.org/" ; s.WebServicePath = " /SimpleService/Service1.asmx" ; s.SoapAction = s.XmlNamespace+s.MethodName; s.AddParameter( " one" , " David" ); s.AddParameter( " two" , " Hobbs" ); String response = s.sendRequest();

在这个示例中,response字符串在发送两个参数给Web服务后,被填充了Web服务的结果。SoapRequestBuilder类的完整源代码包含在源文件中。

运行示例代码

要运行示例代码,请先设置Web服务,然后将Java Applet文件复制到同一机器上的任何文件夹,并双击HTML文件。所有参数都在HTML文件中配置,因此可以通过编辑HTML来更改传递给Web服务的值;不需要重新编译Java源代码。在Windows XP上的IE 6.0、Netscape 7.1和Opera 7.23上测试了示例。

注意事项

一些Java虚拟机(如Microsoft的)只允许与托管Java类文件的同一机器建立套接字连接。因此,如果像一样使用Applet,需要将Java类文件托管在与Web服务相同的机器上。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485