当前位置:文档之家› http协议和webservice

http协议和webservice

竭诚为您提供优质文档/双击可除http协议和webservice篇一:通过httpwebRequest对webservice进行动态调用本文章设计到使用的代码示例的webservice为服务路径:http://localhost/webservicetest/service1.asmx 服务接口:[webmethod]publicstringhelloworld(stringstudentname,stringpass word){return"helloworld";}1后台调用webservice的业务需求在实际开发环境中,我们常常调用webservice时,通过项目中引用现实部署的webservice的asmx文件,生成客户端代理类的方式。

这种方式将和webservice进行了二次封装,并以代理类的方式进行调用,有利用简单,快捷的开发。

这种开发方式包含了两个重要的问题1)在开发环境中必须可以访问需要调用的webservice,在开发一些大公司的内网系统时,我们往往在开发环境中访问不到,只仅仅在部署环境中访问。

2)webservice的接口发生版本变更,我们的应用系统需要重新编译并部署。

在发现以上的困惑后,直觉告诉我们,我们需要一种直接通过交互协议的方式进行访问webservice。

就像网页爬虫一样,去交互业务操作。

2webservice支持的交互协议webservice支持三种方式1)httppost方式(注意这种方式只对于本机调试使用,在web服务部署在其他机器上,应用程序不能通过httppost 方式调用)具体交互格式如下:post/webservicetest/service1.asmx/helloworldhttp/1. 1host:localhostcontent-type:application/x-www-form-urlencoded content-length:lengthstudentname=stringcharset=utf-8content-length:lengthsoapaction:"/helloworld"stringstring3)soap1.2协议交互格式如下:post/webservicetest/service1.asmxhttp/1.1 host:localhostcontent-type:application/soap+xml;charset=utf-8 content-length:lengthstringstring3如何配置webservice支持的协议webservice支持的协议包含两种soap1.1soap1.2对于webservice来讲可以通过配置文件配置,支持那些协议,默认的情况下两种协议都支持。

具体的配置方式为:在配置文件中4后台对webservice的调用4.1soap1.1后台调用实例stringstr1="\"双引号\"";console.writeline("新开始进行连接测试");stringparam=@"11";byte[]bs=encoding.utF8.getbytes(param);httpwebRequestmyRequest=(httpwebRequest)webRequest. create("http://fox-gaolijun/short_message/service1. asmx");myRequest.method="post";myRequest.contenttype="text/xml;charset=utf-8";myRequest.headers.add("soapaction","http://tempuri. org/helloworld");myRequest.contentlength=bs.length;console.writeline("完成准备工作");using(streamreqstream=myRequest.getRequeststream()){reqstream.write(bs,0,bs.length);}using(httpwebResponsemyResponse=(httpwebResponse)my Request.getResponse()){streamReadersr=newstreamReader(myResponse.getRespon sestream(),encoding.utF8);responsestring=sr.Readtoend();console.writeline("反馈结果"+responsestring);}console.writeline("完成调用接口");}catch(exceptione){console.writeline(system.datetime.now.toshorttimest ring()+"lbsexception:"+e.message);console.writeline(e.stacktrace);}篇二:webservice到底是什么?一、序言大家或多或少都听过webservice(web服务),有一段时间很多计算机期刊、书籍和网站都大肆的提及和宣传webservice技术,其中不乏很多吹嘘和做广告的成分。

但是不得不承认的是webservice真的是一门新兴和有前途的技术,那么webservice到底是什么?何时应该用?当前的应用程序开发逐步的呈现了两种迥然不同的倾向:一种是基于浏览器的瘦客户端应用程序,一种是基于浏览器的富客户端应用程序(Ria),当然后一种技术相对来说更加的时髦一些(如现在很流行的html5技术),这里主要讲前者。

基于浏览器的瘦客户端应用程序并不是因为瘦客户能够提供更好的用户界面,而是因为它能够避免花在桌面应用程序发布上的高成本。

发布桌面应用程序成本很高,一半是因为应用程序安装和配置的问题,另一半是因为客户和服务器之间通信的问题。

传统的windows富客户应用程序使用dcom来与服务器进行通信和调用远程对象。

配置好dcom使其在一个大型的网络中正常工作将是一个极富挑战性的工作,同时也是许多it工程师的噩梦。

事实上,许多it工程师宁愿忍受浏览器所带来的功能限制,也不愿在局域网上去运行一个dcom。

关于客户端与服务器的通信问题,一个完美的解决方法是使用http协议来通信。

这是因为任何运行web 浏览器的机器都在使用http协议。

同时,当前许多防火墙也配置为只允许http连接。

许多商用程序还面临另一个问题,那就是与其他程序的互操作性。

如果所有的应用程序都是使用com或.net语言写的,并且都运行在windows平台上,那就天下太平了。

然而,事实上大多数商业数据仍然在大型主机上以非关系文件(Vsam)的形式存放,并由cobol语言编写的大型机程序访问。

而且,目前还有很多商用程序继续在使用c++、java、Visualbasic和其他各种各样的语言编写。

现在,除了最简单的程序之外,所有的应用程序都需要与运行在其他异构平台上的应用程序集成并进行数据交换。

这样的任务通常都是由特殊的方法,如文件传输和分析,消息队列,还有仅适用于某些情况的的api,如ibm的高级程序到程序交流(appc)等来完成的。

在以前,没有一个应用程序通信标准,是独立于平台、组建模型和编程语言的。

只有通过webservice,客户端和服务器才能够自由的用http进行通信,不论两个程序的平台和编程语言是什么。

二、webservice到底是什么?一言以蔽之:webservice是一种跨编程语言和跨操作系统平台的远程调用技术。

所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。

所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台计算机b上的一个对象的方法,譬如,银联提供给商场的pos刷卡系统,商场的pos机转账调用的转账方法的代码其实是跑在银行服务器上。

再比如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率,往大的概念上吹,就是所谓的soa应用。

其实可以从多个角度来理解webservice,从表面上看,webservice就是一个应用程序向外界暴露出一个能通过web进行调用的api,也就是说能用编程的方法通过web来调用这个应用程序。

我们把调用这个webservice的应用程序叫做客户端,而把提供这个webservice的应用程序叫做服务端。

从深层次看,webservice是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。

它定义了应用程序如何在web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写webservice,只要我们可以通过webservice标准对这些服务进行查询和访问。

webservice平台需要一套协议来实现分布式应用程序的创建。

任何平台都有它的数据表示方法和类型系统。

要实现互操作性,webservice平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。

webservice平台必须提供一种标准来描述webservice,让客户可以得到足够的信息来调用这个webservice。

最后,我们还必须有一种方法来对这个webservice进行远程调用,这种方法实际是一种远程过程调用协议(Rpc)。

为了达到互操作性,这种Rpc协议还必须与平台和编程语言无关。

三、webservice平台技术xml+xsd,soap和wsdl就是构成webservice平台的三大技术。

xml+xsd:webservice采用http协议传输数据,采用xml格式封装数据(即xml中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的返回结果是什么)。

xml是webservice平台中表示数据的格式。

除了易于建立和易于分析外,xml主要的优点在于它既是平台无关的,又是厂商无关的。

无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。

相关主题