如何在客户端直接调用WebService中的方法

2024-05-08 21:49

1. 如何在客户端直接调用WebService中的方法

 1.Web.config中需要配置好运行ASP.NET AJAX框架相应的配置项,当然,建立一个ASP.NET AJAX Enabled Web Site项目时,Web.config已经配置好了。
  2.想让某个WebService可以被JS调用,需要做一下几步:
  I.在这个WebService文件里用“using System.Web.Script.Services;”引入这个命名空间。
  II.在这个类的上面添加“[ScriptService]”属性。
  III.在需要被调用的方法上添加“[WebMethod]”属性。
  具体例子可以参考《ASP.NET AJAX客户端编程之旅(一)——Hello!ASP.NET AJAX》中的SayHelloService.cs的代码。
  3.调用WebService的客户端页面也要做相应准备。首先就是页面中要有一个ScriptManager控件,然后需要在其中指明WebService文件的位置。如:
  
  
  
  将这段代码放在和标签之间,就可以使得这个页面中的JS可以直接调用SayHelloService.asmx中的方法。具体代码可以参考《ASP.NET AJAX客户端编程之旅(一)——Hello!ASP.NET AJAX》中第二个例子中的Default.aspx的代码。
  做好以上三项准备,这个页面中的JS代码就可以使用我们熟悉的“类名.方法名”的方法直接调用WebService中的方法了。

如何在客户端直接调用WebService中的方法

2. 如何在客户端直接调用WebService中的方法

  1.Web.config中需要配置好运行ASP.NET AJAX框架相应的配置项,当然,建立一个ASP.NET AJAX Enabled Web Site项目时,Web.config已经配置好了。
  2.想让某个WebService可以被JS调用,需要做一下几步:
  I.在这个WebService文件里用“using System.Web.Script.Services;”引入这个命名空间。
  II.在这个类的上面添加“[ScriptService]”属性。
  III.在需要被调用的方法上添加“[WebMethod]”属性。
  具体例子可以参考《ASP.NET AJAX客户端编程之旅(一)——Hello!ASP.NET AJAX》中的SayHelloService.cs的代码。
  3.调用WebService的客户端页面也要做相应准备。首先就是页面中要有一个ScriptManager控件,然后需要在其中指明WebService文件的位置。如:
  
  
  
  将这段代码放在和标签之间,就可以使得这个页面中的JS可以直接调用SayHelloService.asmx中的方法。具体代码可以参考《ASP.NET AJAX客户端编程之旅(一)——Hello!ASP.NET AJAX》中第二个例子中的Default.aspx的代码。
  做好以上三项准备,这个页面中的JS代码就可以使用我们熟悉的“类名.方法名”的方法直接调用WebService中的方法了。

3. 如何调用webservice接口

webservice主要是一些站点为我们写好了的方法,供我们调用,当然我们也可以自己去编写自己的webservice, 所以你首先得找到这样的接口。看一些站点有没有这样的接口。 

 
 
下面我们就拿一个简单的天气预报接口。先把天气预报接口的地址输入地址栏: ( http://webservice。36wu。com/weatherService.asmx 这个是例子,实际中根据个人需要修改)
会出现一些带有链接的方法名和参数说明之类的。看完之后,然后进链接可以看到测试,可以先把我们想测试的参数写进去,点击调用,会出现一个xml文件,这些就是得到的结果,依情况而定我们出把结果处理成我们想要的就可以了。

下面说一下怎么在项目中调用:新建一个web项目,然后点击添加引用服务如图,然后点击确定。



这样就会发现在webconfig文件里面多了一下节点,而且项目类中的Service References文件件多了一个绿色的东西。可以点击看看他有哪些方法,应该是和我们在浏览器输入链接的方法是一致的,剩余就是怎么调用了。下面给出具体的代码:本代码值在webForm中先添加Lable、TextBox、Button以及Literal各一个。然后点击按钮。

 
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(this.TextBox1.Text))
            {
                WeatherService.WeatherWebServiceSoapClient service = new WeatherService.WeatherWebServiceSoapClient();
              
              String[] strWeatherInfo = service.getWeatherbyCityName(this.TextBox1.Text);
              StringBuilder str = new StringBuilder("");
              str.AppendLine("您查看天气信息如下:");
              foreach (string info in strWeatherInfo)
              {
                  str.AppendLine(info+"");
              }
                this.Literal1.Text =str.ToString();
            }
        }
 
运行程序, 就看到效果了。

如何调用webservice接口

4. 如何调用webservice接口中的方法

webservice主要是一些站点为我们写好了的方法,供我们调用,当然我们也可以自己去编写自己的webservice,本文主要是通过一个小的实例,去如何调用webservice。下面先给出几个常用的webservice的调用地址。

下面我们就拿一个简单的天气预报接口。先把天气预报接口的地址输入地址栏:会出现一些带有链接的方法名和参数说明之类的。看完之后,然后进链接可以看到测试,可以先把我们想测试的参数写进去,点击调用,会出现一个xml文件,这些就是得到的结果,依情况而定我们出把结果处理成我们想要的就可以了。下面说一下怎么在项目中调用:新建一个web项目,然后点击添加引用服务如图,然后点击确定。

这样就会发现在webconfig文件里面多了一下节点,而且项目类中的Service References文件件多了一个绿色的东西。可以点击看看他有哪些方法,应该是和我们在浏览器输入链接的方法是一致的,剩余就是怎么调用了。下面给出具体的代码:本代码值在webForm中先添加Lable、TextBox、Button以及Literal各一个。然后点击按钮。

运行程序,输入查看的城市:点击按钮如图所示:

5. 如何调用webservice接口

webservice主要是一些站点为咱们写好了的方法,供咱们调用,当然也可以自己去编写自己的webservice, 所以首先得找到这样的接口。看一些站点有没有这样的接口。 

下面咱们就拿一个简单的天气预报接口。先把天气预报接口的地址输入地址栏: ( http://webservice。36wu。com/weatherService.asmx 这个是例子,实际中根据个人需要修改)
会出现一些带有链接的方法名和参数说明之类的。看完之后,然后进链接可以看到测试,可以先把想测试的参数写进去,点击调用,会出现一个xml文件,这些就是得到的结果,依情况而定咱们出把结果处理成想要的就可以了。

下面说一下怎么在项目中调用:新建一个web项目,然后点击添加引用服务如图,然后点击确定。

这样就会发现在webconfig文件里面多了一下节点,而且项目类中的Service References文件件多了一个绿色的东西。可以点击看看他有哪些方法,应该是和咱们在浏览器输入链接的方法是一致的,剩余就是怎么调用了。下面给出具体的代码:本代码值在webForm中先添加Lable、TextBox、Button以及Literal各一个。然后点击按钮。

protected void Button1_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(this.TextBox1.Text))
            {
                WeatherService.WeatherWebServiceSoapClient service = new WeatherService.WeatherWebServiceSoapClient();
              
              String[] strWeatherInfo = service.getWeatherbyCityName(this.TextBox1.Text);
              StringBuilder str = new StringBuilder("");
              str.AppendLine("您查看天气信息如下:");
              foreach (string info in strWeatherInfo)
              {
                  str.AppendLine(info+"");
              }
                this.Literal1.Text =str.ToString();
            }
        }
 
运行程序, 就看到效果了。

如何调用webservice接口

6. 如何动态调用WebServices

我们都知道,调用WS可以在工程中添加对WS的WEB引用。
但是,如果我们不想通过添加引用的方式,而是在代码中动态引用该怎么办呢?
首先,我们该想到WS的实现也是一个类的形式。
其次,WS在传输过程中是通过WSDL来进行描述的(使用SOAP协议)。
因此,我们需要获取WS的WSDL描述,并通过该描述来动态生成程序集。
最后:通过反射来获取新生成的程序集,并调用其方法!
上述步骤需要引用如下四个名称空间:
using System.Web.Services.Description;  //WS的描述
//以下几个用于根据描述动态生成代码并动态编译获取程序集
using System.CodeDom;  
using Microsoft.CSharp;
using System.CodeDom.Compiler;
上述几个名称空间中包括如下几个重要的类:
using System.Web.Services.Description下:
ServiceDescription  //WS描述
ServiceDescriptionImporter  //通过描述生成客户端代理类,特别注意其中的Style
以下是MSDN对其的描述:
        XML Web services 的接口通常由 Web 服务描述语言 (WSDL) 文件来说明。例如,若要获取有关使用http://localhost/service.asmx 处公开的 ASP.NET 的 Web 服务的 WSDL 说明,只需导航到 http://localhost/service.asmx?WSDL。使用 ServiceDescriptionImporter 类可以方便地将 WSDL 说明中包含的信息导入到System.CodeDom.CodeCompileUnit 对象。通过调整 Style 参数的值,可以指示 ServiceDescriptionImporter 实例生成客户端代理类(通过透明调用该类可提供 Web 服务的功能)或生成抽象类(该类封装 Web 服务的功能而不实现该功能)。如果将 Style 属性设置为 Client,则 ServiceDescriptionImporter 生成客户端代理类,通过调用这些类来提供说明的 Web 服务的功能。如果将Style 属性设置为 Server,则 ServiceDescriptionImporter 实例生成抽象类,这些类表示所说明的 XML Web services 的功能而不进行实现。然后,可以通过编写从这些抽象类继承的类来对其进行实现,并实现相关的方法。
using System.CodeDom下:
 CodedomUnit //它用于设定动态代码的名称空间,类名等,可以通过ServiceDescriptionImporter.Import()方法将WS的描述代码写入该类,以作动态编译用

using System.CodeDom.Compiler下:
CodedomProvider //用于创建和检索代码生成器和代码编译器的实例,我们主要用到其实现子类CShareCodeProvider
可以直接用CShareCodeProvider provider=new CShareCodeProvider()来生成,或者用CodedomProvider.CreateProvider("CSharp")来生成
ICodeCompiler //用于编译基于 System.CodeDom 的源代码表示形式。 
它通过CodedomProvider的CreateCompiler()方法来
CompilerResults  //表示从编译器返回的编译结果。 它由ICodeCompiler根据指定的编译器设置从指定的 CodeCompileUnit 所包含的 System.CodeDom 树中编译程序集并返回。CompiledAssembly 属性指示编译的程序集。

了解如上信息后,就可动态调用WS了。

7. 什么是WebService?为什么要使用WebService

webservice是一个soa(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过internet进行基于http协议的网络应用间的交互。
webservice实现不同语言间的调用,是依托于一个标准,webservice是需要遵守wsdl(web服务定义语言)/soap(简单请求协议)规范的。
webservice=wsdl+soap+uddi(webservice的注册)
soap是由soap的part和0个或多个附件组成,一般只有part,在part中有envelope和body。
web
service是通过提供标准的协议和接口,可以让不同的程序集成的一种soa架构。
web
service的优点
(1)
可以让异构的程序相互访问(跨平台)(2)
松耦合
(3)
基于标准协议(通用语言,允许其他程序访问)
web
service的基本原理
(1)
service
provider采用wsdl描述服务
(2)
service
provider
采用uddi将服务的描述文件发布到uddi服务器(register
server)
(3)
service
requestor在uddi服务器上查询并
获取wsdl文件
(4)
service
requestor将请求绑定到soap,并访问相应的服务。

什么是WebService?为什么要使用WebService

8. java如何调用webservice接口?

Java通过WSDL文件来调用webservice直接调用模式如下:
import java.util.Date;
import java.text.DateFormat;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.lang.Integer;
import javax.xml.rpc.ParameterMode;
public class caClient {
public static void main(String[] args) {
try {
String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";
//直接引用远程的wsdl文件
//以下都是套路 
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("addUser");//WSDL里面描述的接口名称
call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,
javax.xml.rpc.ParameterMode.IN);//接口的参数
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型  
String temp = "测试人员";
String result = (String)call.invoke(new Object[]{temp});
//给方法传递参数,并且调用方法
System.out.println("result is "+result);
}
catch (Exception e) {
System.err.println(e.toString());
}
}
}
最新文章
热门文章
推荐阅读