webservice客户端调用方式,如何调用web service接口的某个方法
webservice客户端调用方式,如何调用web service接口的某个方法详细介绍
本文目录一览: 使用C#创建webservice及调用方式?
1、创建Webservice服务,需要在VS中首先创建一个Web工程,再添加一个Webservice类即可,。
2、编写Webservice的方法,以下以VS默认的HelloWord为例。
另外在实际使用中,出现过部署到ESB后不识别的情况,后经测试发现需要增加以下内容:
3、在Webservice类上点击右键-在浏览器中查看,可以查看webservice服务,在原URL地址后增加?wsdl可以查看wsdl文件。
4、对于解决方案内的webservice服务,或者网络中的webservice服务,可以通过URL地址的方式添加引用。在工程上点击右键-添加服务引用-高级-添加Web服务,输入URL地址即可。
5、对于异构系统提供的接口地址,或者内网环境,本地无法访问的情况,可以通过引用wsdl文件的方式,wsdl文件可以在接口地址后加?wsdl或者有异构系统提供。步骤和以上相同,只是最后的URL地址改为本地路径即可。
ASP.NET 3.5核心编程之AJAX Web Service的调用
AJAX模型基于两个层次--客户端应用程序层和服务器应用程序层。在这种模型下,客户端层向服务器层发送请求,而服务器层向客户端层返回响应。服务器端点通过URL标识,并通过源(feed)(通常为JSON[JavaScript Object Notation]数据流)向客户端暴露数据。服务器层只是一个接收调用并将其转发给应用程序业务逻辑层的外观。下图描绘了整个模型:为使 AJAX页面能够调用远程服务,该服务必须满足几点要求,其中最关键的一点与端点和底层平台的位置有关。支持AJAX的服务必须位于调用者所处的域中。这意味着该服务必须是 XML Web服务(。asmx端点),必须以应用程序的形式寄放于同一Web服务器的某个IIS应用程序中。总的来说,对于 AJAX应用服务,有3种定义服务器层服务的方式:1. 带有asmx端点的 XML Web服务。2. 带有svc端点的WCF服务。3. 带有aspx端点的页面方法,这些方法定义在与主调页面相同的页面中。"服务(Service)"这个词往往被误用。在AJAX中,服务指的是隶属于应用程序的代码(位于应用程序的域中),用于向客户端暴露相应的功能。从根本上讲,AJAX应用程序使用的服务一般不通过简单对象访问协议(SOAP)进行通信(而是使用JSON),不必是面向服务架构(SOA)中自治的服务。它们与自身所处平台和域绑定。因此,不能称这里的服务为WS-*Web服务和SOA服务。REST服务针对AJAX应用程序的服务围绕着暴露给Web客户端数据和资源。二者可通过HTTP获取,要求客户端通过URL(也可以有HTTP标头)来访问数据和命令操作。客户端与服务的交互是通过GET、POST、PUT和DELETE这样的动作来完成。换言之,URL用于描述所要获取的资源,HTTP动作用于描述对资源执行的操作。这类交互过程中交换的数据由简单的格式表示,甚至可以用联合格式(如RSS和ATOM)表示。具有这些特性的服务为具象状态传输(Representational State Transfer,REST)。数据的序列化AJAX调用包含作为参数传给被调服务方法的数据及作为输出返回的数据。这些数据是如何序列化的?通信双方都能理解的序列化格式为JavaScript对象表示法(JSON)。JSON是一种基于文本的格式,专门用于在不同层次间传递对象的状态。JavaScript支持JSON,可通过JavaScript的eval函数将JSON兼容的字符串转换为JavaScript对象。然而,如果JavaScript字符串代表自定义对象的状态,那么开发者应确保具有相应类的定义。AJAX网络堆栈要负责为每个远程传递的对象创建JSON字符串。在服务器端,通过专门的格式化程序类接收数据,并通过。NET反射来填充与之匹配的托管类。在返回时,.NET托管类会被序列化为JSON字符串,并发送给客户端。脚本管理器会确保引用这些JSON字符串的类(Web服务代理类)存在于客户端。下面给出一个描述对象状态的JSON格式的示例:{"ID":"ALFKI", "Company":"Alfred Futterkiste"}这个字符串说明该对象有两个属性:ID和Company,存储的是以字符串的形式序列化的值。如果某个属性被赋予一个非基本类型的值(如自定义对象),那么该值会以递归方式序列化为JSON.[JSON与XML相比XML,JSON更精炼,更适合JavaScript语言。应用程序特定的Web服务在默认情况下, Web服务收发的是SOAP数据包(而不是JSON数据包),通过Web服务描述语言(Web Services Description Language,WSDL)文档来暴露其协定。AJAX应用程序上下文中的 XML Web服务是如何工作的呢?可以通过 AJAX应用程序的web.config文件来修改接收asmx请求的HTTP处理程序,将这些调用重定向给能够理解JSON流的HTTP处理程序。这意味着 XML Web服务可以是一种双重的服务,即可接受和处理SOAP请求,也可针对JSON请求。在配置层,我们可以禁用SOAP支持,并隐藏用于对外公开该服务功能的WSDL文件。如果要使用支持JSON的 Web服务,则需要删除XML,因为在调用 Web服务时,我们不处理SOAP和XML.针对AJAX应用程序的 Web服务不采用SOAP消息。远程编程接口的定义协定(contract)用于定义服务器端端点暴露给调用者的内容。如果希望以 Web服务的形式实现,则不严格要求存在实际的协定。但如果 3.5中的WCF服务,那么协定就必须存在。总而言之,以接口形式设计的公共API会使代码更整洁。在实现该接口的类创建完毕后,有关服务器API接口的工作就结束了。这样我们就可以发布这个远程API,并使 AJAX运行库来管理来自客户端的调用。对于 Web服务,我们通过纯粹的接口来定义协定,使该接口包含与服务器API有关的方法和属性。下面给出一个简单的服务:using System;public interface ITimeService{DateTime GetTime();string GetTimeFormat(string format);}这两个方法构成了可以在客户端调用的服务器API.实现已约定的接口Web服务通常通过派生自基类WebService的。NET类来实现:using System.Web.Services;public class TimeService : WebService, ITimeService{}注意,没有必要一定要从基类WebService派生,这个基类主要用于直接访问一些常用的对象(如Application和Session)。如果不需要直接访问这些内部的对象,即使不从WebService类派生也能创建 Web服务。这种情况下,我们可通过HttpContext对象来间接地使用内部的对象。协定的发布从本质来说,发布给定的服务器协定,就是生成一个嵌在页面中的脚本能够调用的JavaScript代理类。如果服务器API通过Web服务实现,我们要向 AJAX页面的脚本管理器注册该Web服务。此外,我们还要在web.config文件中添加一个特殊的asmx请求HTTP处理程序。Web服务的远程调用Web服务提供了服务器端代码的宿主环境,以便在响应客户端的操作时进行调用。服务中的Web方法指向应用程序特定的代码。AJAX Web服务的创建为 AJAX应用程序定制的Web服务比其他 Web服务要小。 AJAX Web服务与传统的 XML Web服务间存在两方面的差异。首先,若使用 AJAX Web服务,那么为满足特定应用程序的需要,我们要设计 AJAX Web服务的协定,而不是配置公共服务的行为。目标应用程序就是Web服务的宿主。其次,我们必须使用一个新的特性(attribute)来声明这种Web服务的类,而在常规的 XML Web服务中这是不允许的。最终的效果是, AJAX Web服务可能有两套公共接口:一套是基于JSON对接口,由宿主 AJAX应用程序使用;另一套是基于SOAP的接口,暴露给客户端,任何平台都能访问该服务的URL.ScriptService特性(attribute)为创建 AJAX Web服务,第一步是要建立标准的 Web服务项目,随后导入System.Web.Script.Services命名空间:using System.Web.Script.Services;namespace Core35.WebService{[WebService(Namespace="[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)][ScriptService]public class TimeService : System.Web.Services.WebService, ITimeService{}}ScriptService特性是使 XML Web服务与 AJAX Web服务间产生差异的关键。该特性指出,该服务旨在接受来自基于JavaScript客户端代理的调用。阻塞SOAP客户端一旦创建AJAX Web服务,便可以ASMX资源的形式发布它。默认情况下,它会有公共的URL,能够由AJAX客户端调用,同时也能被SOAP客户端和工具发现和使用。但我们可禁用SOAP客户端和工具。为此,只需在web.config文件中添加以下设置:webSevicesprotocolsclear //protocols/webServices这段简单的设置能禁用 Web服务定义的所有协议(包括SOAP),使该服务只能响应JSON请求。注意,如果添加这些设置,则不能够通过浏览器的地址栏来调用Web服务,以便进行简单地测试。类似地,我们也不能为URL添加?wsdl后缀来调用WSDL.Web服务方法的定义客户端页面能够调用Web服务类中带有WebMethod特性的公共方法。在默认情况下,这些方法要通过HTTP动作POST来调用,以JSON对象的形式返回其值。我们可通过一个可选特性ScriptMethod来更改单个方法的默认设置。ScriptMethod特性带有3个属性,见下表:由于涉及安全性和性能问题,因谨慎使用ScriptMethod特性,下面的代码使用了该特性,但未修改默认设置:[WebMethod][ScriptMethod]public DateTime GetTime(){}WebMethod特性是必选的,而ScriptMethod特性是可选的。AJAX Web服务的注册为在客户端发起对 Web服务的调用,我们只需要XMLHttpRequest、目标Web服务的URL和JSON流的管理功能。为方便起见,所有功能都包装在映射到远程编程接口的JavaScript代理类中。该代理类会由 AJAX框架自动生成,并注入到客户端。为使内建的引擎生成所需的JavaScript代理和辅助类,我们应在需要AJAX Web服务的页面中,向脚本管理器控件注册该Web服务:asp:ScriptManager ID="ScriptManager1" runat="server"Servicesasp:ServiceReference Path="~/WebServices/TimeService.asmx" //Services/asp:ScriptManager对于每个要绑定到页面的Web服务,我们添加一个ServiceReference标签,将Path属性设为对应asmx资源的URL.对于每个服务引用,都会在客户端自动生成一个额外的script块。该脚本的URL指向一个系统HTTP处理程序,在内部调用以下URL:~/WebServices/TimeService.asmx/js追加到Web服务URL的/js后缀指示 AJAX运行库为指定的Web服务生成JavaScript代理类。如果页面处于调试模板,该后缀会被改为/jsdebug.默认情况下,JavaScript代理通过script标签连接到页面,这样就需要单独下载。通过将ServiceReference对象InlineScript属性设置为true,我们还可以将任何所需的脚本并入当前页面。如果启用浏览器缓存,且多个Web页面使用相同的服务引用,那么默认值false更合适。在这种情况下,不论多少页面需要这个代理类,都只需执行一次请求。将InlineScript属性设为true会降低网络请求数,但会多占用一定的带宽。如果以编程方式注册AJAX Web服务,我们使用类似以下的代码:ServiceReference service = new ServiceReference();service.Path = "~/WebServices/TimeService.asmx";ScriptManager1.Services.Add(service);不论采用哪种方式,为调用Web服务,我们只需通过JavaScript代理类发起调用即可。使用应用程序来承托AJAX Web服务为启用 AJAX应用程序中的Web服务调用,我们需要在web.config文件中添加以下内容以注册一个特殊的asmx请求HTTP处理程序:httpHandlersremove verb="*" path="*.asmx" /add verb="*" path="*.asmx"type="System.Web.Script.Services.ScriptHandlerFactory" //httpHandlers该设置已包含在VS2008为支持AJAX的Web项目而创建的web.config文件中。处理程序工厂(System.Web.Script.Services.ScriptHandlerFactory类)会选择负责处理给定类型请求的HTTP处理程序,且能通过Web服务调用中的脚本来识别JSON调用。基于JSON的请求由特殊的HTTP处理程序处理,而常规的SOAP调用会穿越管道。AJAX Web服务的调用被引用的 AJAX Web服务暴露给JavaScript代码的类名与服务器类名相同。代理类采用单例模式,暴露了外界调用的静态方法,无需实例化。JavaScript代理类以上述的timeservice.asmx生成的JavaScript代理类为例,让我们看看它的代码:Type.registerNamespace('Core35.WebServices');Core35.WebServices.TimeService = function(){Core35.WebServices.TimeService.initializeBase(this);this._timeout = 0;this._userContext = null;this._succceeded = null;this._failed = null;}Core35.WebServices.TimeService.prototype ={//调用GetTime方法GetTime : function(succeededCallback, failedCallback, userContext){//invoke参数分别为://Web Service URL路径//Web Service方法名称////传入方法的参数数组//执行成功回调函数//执行失败回调函数//调用上下文对象return this._invoke(Core35.WebServices.TimeService.get_path(),'GetTime',false,{},succeededCallback,failedCallback,userContext);},GetTimeFormat : function(timeFormat, succeededCallback, failedCallback, userContext){return this._invoke(Core35.WebServices.TimeService.get_path(),'GetTimeAsFormat',false,{format:timeFormat},succeededCallback,failedCallback,userContext);}}//注册Core35.WebServices.TimeService类,该类继承于.WebServiceProxyCore35.WebServices.TimeService.registerClass('Core35.WebServices.TimeService',.WebServiceProxy);//创建一个JavaScript代理类实例Core35.WebService.TimeService._staticInstance = new Core35.WebServices.TimeService();在JavaScript中调用WebService方法其实是通过最后创建的JavaScript代理类实现的:Core35.WebService.TimeService.GetTime = function(onSuccess, onFailed, userContext){Core35.WebService.TimeService._staticInstance.GetTime(onSuccess, onFailed, userContext);}Core35.WebService.TimeService.GetTimeFormat = function(onSuccess, onFailed, userContext){Core35.WebService.TimeService._staticInstance.GetTimeFormat(onSuccess, onFailed, userContext);}在这个代理类的定义中带有几个公共属性:path属性用于定义Web服务的URL,我们可以编程方式更改该属性值,以便将代理重定向到其他URL.远程调用的执行下面是将JavaScript代理与客户端按钮点击关联的典型方法:input type="button" value="Get Time" onclick="getTime()" /按钮最好是客户端按钮,但也可以是服务器端Button对象生成的提交按钮,只要将OnClientClick属性设置为false的JavaScript代码即可,这会避免它执行默认的回发操作:asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="getTime(); return false;" /getTime函数用于采集必要的输入数据,并调用代理类中的静态方法。如果希望为回调或用户上下文对象赋予默认值,那么最好在pageLoad函数中进行。因为pageLoad函数会在客户端页面 AJAX成功初始化后调用,该函数比浏览器的onload事件更可靠。示例代码如下:script language="javascript" type="text/javascript"function pageLoad(){//设置默认的调用失败回调函数Core35.WebServices.TimeService.set_defaultFailedCallback(methodFailed);}function getTime(){Core35.WebServices.TimeService.GetTimeFormat("ddd, dd MMMM yyyy [hh:mm:ss]", methodComplete);}function methodComplete(results, context, methodName){$get("Label1")。innerHTML = results;}function methodFailed(errorInfo, context, methodName){$get("Label1")。innerHTML = String.Format("Execution of method '{0}' failed because of the following:'{1}'",methodName, errorInfo.get_message());}/script由于Web服务调用是以异步方式处理的,因而我们需要回调来处理调用成功和失败这两种情况。这两个回调的签名类似:function method(results, context, methodName)下表对各参数做了简要说明:错误处理failed回调会在服务器上的远程方法执行期间发生异常时被调用。在这种情况下,HTTP响应会包含HTTP错误码500(内部错误)。在客户端,服务器异常通过JavaScript中的Error对象暴露,该对象会基于从服务器端获得的消息和堆栈跟踪而动态创建。Error对象会通过results参数暴露给failed回调。我们可通过Error对象的message和stackTrace属性来分别读取收到的消息和堆栈跟踪。如果我们未指派默认的错误回调函数, AJAX会调用自己的默认回调函数,该回调函数会弹出一个带有服务器异常消息的消息框。为用户提供反馈虽然UpdatePanel中提供了异步调用的反馈机制(如UpdateProgress控件),但对于传统的远程方法调用,我们只能自行编写代码实现对用户的反馈。我们可以在远程方法调用执行前显示等待消息、GIF动画或其他内容:function takeaWhile(){//显示等待消息$get("Feedback")。innerHTML = "Please, wait ";Core35.WebServices.MySampleService.VeryLengthyTask(methodCompletedWithFeedback, methodFailedWithFeedback);}在completed回调中,我们首先重置用户界面,然后再进行其他操作:function methodCompletedWithFeedback(results, context, methodName){$get("Feedback")。innerHTML = "";}注意,在发生错误时,我们也要清除用户界面。超时处理如果发起对asmx Web服务的客户端调用,则是对asmx的直接调用。对于该请求,运行库中只有同步处理程序。也就是说,不论客户端如何检测当前调用是否正在进行,线程都会被完全阻塞,直到AJAX方法执行完毕。为此,我们可以设置超时时间:Core35.WebServices.MySampleService.set_timeout(3000);timeout属性是全局的,作用于代理类的所有方法。如果请求超时,我们便不会从服务器收到响应,客户端只能单方面的撤销执行。
Java调用webservice和postmain调用的区别
区别是WebService可以有Get、Post、Soap、Document四种方式调用。我们可以把webservice看做是web服务器上的一个应用,web服务器是webservice的一个容器。通过wximport生成代码。通过客户端编程方式。通过URLConnection方式调用。
如何调用web service接口的某个方法
java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自动生成代码省事些。
1、编写代码方式:
package com.yudun.test;
import java.rmi.RemoteException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
import com.cezanne.golden.user.Exception;
import com.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
public class testWebService {
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException
{
//标识Web Service的具体路径
String endpoint = "WebService服务地址";
// 创建 Service实例
Service service = new Service();
// 通过Service实例创建Call的实例
Call call = (Call) service.createCall();
//将Web Service的服务路径加入到call实例之中.
call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call设置服务的位置
// 由于需要认证,故需要设置调用的SOAP头信息。
Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") );
org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode( "blablabla" );
call.addHeader(header);
// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");
// soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");
// try
// {
// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
// }
// catch (SOAPException e)
// {
// e.printStackTrace();
// }
// call.addHeader(soapHeaderElement);
//调用Web Service的方法
org.apache.axis.description.OperationDesc oper;
org.apache.axis.description.ParameterDesc param;
oper = new org.apache.axis.description.OperationDesc();
oper.setName("opName");
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(new javax.xml.namespace.QName("", "return"));
oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
oper.addFault(new org.apache.axis.description.FaultDesc(
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
"Exception",
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
true
));
call.setOperation( oper );
call.setOperationName(new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "opName"));
//调用Web Service,传入参数
String res = ( String ) call.invoke( new Object[]("arg0","arg1"));
System.out.println("===============");
return res;
}
/**
* @param args
*/
public static void main(String[] args) {
try {
System.out.println(getResult());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
} catch (SOAPException e) {
e.printStackTrace();
}
}
}
2、利用Eclipse自动生成WebService client代码就容易多了:(由于还不会发图片,就用语言描述了,大家酬和看吧。。。)
首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击Finish
这样,WebService Client代码已经生成好了。
接下来写一个Test类,在main函数中输入如下代码:
String endpoint = "服务器的WebService的地址";
YourWebServiceNameProxy umsp = new YourWebServiceNameProxy (endpoint);
try {
String resultStr = umsp.opMethod("arg0","arg1");
System.out.println(resultStr);
} catch (Exception e) {
System.out.println("异常");
e.printStackTrace();
} catch (RemoteException e) {
System.out.println("RemoteException异常");
e.printStackTrace();
}
调用方法大致有三种方法:
1)使用,直接AXIS调用远程的web service
2)直接SOAP调用远程的webservice
3)使用wsdl2java把WSDL文件转成本地类,然后像本地类一样使用,即可。
我一般使用第三种,挺简单的:
比如webservice的代码如下:
@WebService
public class ServiceHello {
/*
* 供客户端调用的方法
* @param name
* @return String
*/
public String getValue(String name){
return "我叫"+name;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Endpoint.publish("http://localhost:9001/Service/ServiceHello", new ServiceHello());
System.out.println("service success!");
}
}
1)先建立客户端webservice项目,使用命令将WSDL文件转成本地类,比如:
C:\Users\aiher\Workspaces\MyEclipse 2015\TheClient\src>wsimport -s . -p com.hyan.client -keep http://localhost:9001/Service/ServiceHello?wsdl
2)编写客户端测试类,调用服务端web service接口的某个方法,如下:
public class ServiceTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
ServiceHello hello = new ServiceHelloService().getServiceHelloPort();
String name = hello.getValue("Hyan");
System.out.println("name-:"+name);
}
}
如何调用webservice
一、WebService在cs后台程序中的调用
A、通过命名空间和类名直接调用
示例:
WebService ws = new WebService();
string s = ws.HelloWorld();
B、通过添加WEB引用的方式调用,首先添加WEB引用,通过URL指向WEBSERVICE,
指定WEB引用名,假设为KK;
示例:
kk.WebService n = new kk.WebService();
string ss=n.HelloWorld();
二、WebService在前台页面的JS 调用方法
1、首先通过下面的方法把Webservice在前台引用进来
2、然后就可以通过JS程序进行调用,示例如下:
function a()
{
WebService.HelloWorld(onresult);
}
//这里的onresult是回调函数
function onresult(result)
{
alert(result);
}
function b()
{
WebService.add(1,2,onreturn)
}
function onreturn(result)
{
alert(result);
}
//下面的'context'是上下文,可以通过回到函数通过重载的方式获得;
function c()
{
WebService.div(1,1,onresultC,onerror,'context');
}
function onresultC(res,c)
{
alert(res);
alert(c);
}
//onerror是获得异常信息的回调函数,下面给出了获得异常信息的方法
function onerror(error)
{
var a="";
a=String.format("获取服务器端异常的具体类型:{0}\t\n获取详细的异常描述信息:{1}\t\n获取造成异常的:{2}\t\n获取服务器端异常的堆栈
跟踪信息:{3}\t\n获取一个布尔值,表示异常是否是由于网络连接超时造成的{4}",
error.get_exceptionType(),
error.get_message(),
error.get_statusCode(),
error.get_stackTrace(),
error.get_timedOut())
alert(a);
}
a();
b();
c();
webservice生成客户端代码怎么调用
首先, 你要先把你的WS服务启动起来,就是 比如ht tp:/ /localhost:8080/Example/services/HelloWorldService?wsdl
然后在你的另一个项目中建一个Webservice Client 客户端,用来访问你的WS服务。
建立Webservice Client 方法如下,在Eclipses中建立一个java工程,然后在src上右键--NEW---Other---Web Service Client --Xfire--在WsdL url 中写上htt p:/ /localhost:8080/Example/services/HelloWorldService?wsdl-----下一步结束。
在src里的会出现一些java文件,你找一个以Client结束的java文件,在里面的main方法中会有个service对象,现在你就可以直接用这个对象了,service.peerstatus(参数)这样写就行了。
纯手打啊,希望能对你有帮助。
如何在客户端直接调用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接口
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客户端代码后怎么调用
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文件的位置。如: