收藏 分销(赏)

http 协议.ppt

上传人:xrp****65 文档编号:13331237 上传时间:2026-03-02 格式:PPT 页数:28 大小:835.50KB 下载积分:10 金币
下载 相关 举报
http 协议.ppt_第1页
第1页 / 共28页
http 协议.ppt_第2页
第2页 / 共28页


点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,HTTP,协议基本原理,XML Web Service,开发,第,1,章,XML Web Service,第,2,章,XML Web Service,体系结构,第,3,章,XML Web Service,基础技术,第,4,章 使用,XML Web Service,第,5,章,实现一个简单的,XML Web Service,第,6,章 部署和发布,XML Web Service,第,7,章,XML Web Service,的安全,第,8,章,XML Web Service,设计,第,9,章,全局,XML Web Service,体系结构,第,3,章,XML Web Service,基础技术,HTTP,协议基本原理,在,.NET Framework,中使用,HTTP,协议,XML,基本要点,SOAP,协议的基本原理,在,.NET Framework,中运用,SOAP,协议,HTTP,协议基本原理,HTTP,协议概述,HTTP,请求与,HTTP,响应的结构,HTTP,的,GET,与,POST,方法,3.1 HTTP,协议基本原理,URL,、,URI,和,URN,URI,,,Uniform Resource Identifier,统一资源标识符,用字符串惟一标识信息资源,URL,,,Uniform Resource Locator,统一资源定位符,通过,“,通讯协议网络地址,”,字符串惟一标识信息位置和资源访问途径,URN,,,Uniform Resource Name,统一资源命名符,用于惟一标识全球范围内由专门机构负责的稳定的信息资源,3.1 HTTP,协议基本原理,HTTP,协议概述,URL,结构,无状态协议,在客户端发出,HTTP,请求并收到服务器端响应后,连接就会断开,下次的访问与前一次的访问无关,因此如果需要维护客户端的信息,必须在服务器端维持状态数据,实例,,host,:,port,path,?,querystring,HTTP,协议概述,HTTP,请求的结构,请求的结构,例子,POST/TheStockExchange/Trading/GetStockPrice.asp HTTP/1.1,Host:localhost,Content-Type:application/x-www-form-urlencoded,Content-Length:11,Symbol=MSFT,注意空行,Method URL Version,Headers,Message body,注意空行,3.1.2 HTTP,请求与,HTTP,响应的结构,响应的结构,例子,HTTP/1.1 200 OK,Content-Type:text/xml;charset=utf-8,Content-Length:75,HTTP,响应的结构,注意空行,Version Status-Code Description,Headers,Message body,注意空行,3.1.2 HTTP,请求与,HTTP,响应的结构,HTTP,的,GET,和,POST,方法,HTTP-GET,HTTP-POST,例子,例子,GET/Trading/GetStockPrice.asp?Symbol=MSFT HTTP/1.1,Host:localhost,POST/Trading/GetStockPrice.asp HTTP/1.1,Host:localhost,Content-Type:application/x-www-form-urlencoded,Content-Length:11,Symbol=MSFT,3.1.3 HTTP,的,GET,与,POST,方法,GET,和,POST,方法的区别,GET,方法通常没有消息主体,GET,方法支持最大,1024,个字节的查询字符串,,POST,方法没有限制,POST,方法把查询字符串放在消息主体中传输,因此比,GET,方法支持更多的数据类型,3.1.3 HTTP,的,GET,与,POST,方法,第,3,章,XML Web Service,基础技术,HTTP,协议基本原理,在,.NET Framework,中使用,HTTP,协议,XML,基本要点,SOAP,协议的基本原理,在,.NET Framework,中运用,SOAP,协议,在,.NET Framework,中使用,HTTP,协议,使用,HTTP,协议的,.NET,类,代码演练 发送,HTTP,同步请求,代码演练 发送,HTTP,异步请求,.NET,中与,HTTP,相关的类,HttpWebRequest,由,WebRequest,派生,封装了对,HTTP,协议的支持,HttpWebResponse,由,WebResponse,派生,封装了对,HTTP,协议的支持,支持同步和异步操作,HttpWebRequest,HttpWebResponse,System.Web,System.IO,StreamReader,StreamWriter,3.2.1 使用,HTTP,协议的,.NET,类,HttpWebRequest,类,HttpWebRequest,不使用构造函数来进行初始化,而是调用,WebRequest,的,Create,方法,GetResponse,方法向,RequestUri,属性中指定的,Internet,资源发出同步请求并返回包含该响应的,HttpWebResponse,实例,可以使用,BeginGetResponse,和,EndGetResponse,方法向,Internet,资源发出异步请求,向,Internet,资源发送数据时,,GetRequestStream,方法返回用于发送数据的,Stream,实例,,BeginGetRequestStream,和,EndGetRequestStream,方法提供对发送数据流的异步访问,3.2.1 使用,HTTP,协议的,.NET,类,同步调用与异步调用,在.,NET Framework,指定的异步调用方法的设计模式中,每个同步方法都有两个对应的异步方法,即一个,Begin,异步方法和一个,End,异步方法,客户端调用,Begin,方法启动该方法的异步调用,实质是指示开始进行方法调用,但立即返回,不需要等待结果,客户端调用,End,方法获取,XML Web Service,方法执行的结果,3.2.1 使用,HTTP,协议的,.NET,类,代码示例 发送同步,HTTP,请求,使用,HttpWebRequest,和,HttpWebResponse,类向,Web,服务器发送同步,HTTP,请求,3.2.2 代码演练 发送,HTTP,同步请求,同步请求,/,根据,URL,发送,HTTP,请求,1.HttpWebRequest req=(HttpWebRequest)WebRequest.Create(url);,2.req.ContentType=contentType;,/,确定请求方式为,POST,或,GET,3.req.Method=method;,4.req.ContentLength=content.Length;,5.Stream s;,获取请求流,将请求的内容写入流中,6.s=req.GetRequestStream();,7.StreamWriter sw=new StreamWriter(s,Encoding.ASCII);,8.sw.Write(content);,9.sw.Close();,同步请求,10./,获取响应,11.HttpWebResponse res=(HttpWebResponse)req.GetResponse();,12.s=res.GetResponseStream();,13./,读出响应流,14.StreamReader sr=new StreamReader(s,Encoding.ASCII);,15.StringBuilder sb=new StringBuilder();,16.char data=new char1024;,17.int nBytes;,18.do,19.nBytes=sr.Read(data,0,(int)1024);,20.sb.Append(data);,21.while(nBytes=1024);,代码示例 发送异步,HTTP,请求,使用,HttpWebRequest,和,HttpWebResponse,类向,Web,服务器发送异步,HTTP,请求,3.2.3 代码演练 发送,HTTP,异步请求,异步请求,1.Stream s;,2.HttpWebRequest req=(HttpWebRequest)WebRequest.Create(url);,3.req.ContentType=contentType;,4.req.Method=method;,5.req.ContentLength=content.Length;,6.s=req.GetRequestStream();,7.StreamWriter sw=new StreamWriter(s);,8.sw.Write(content);,9.sw.Close();,异步请求,10./,创建时间处理程序,11.Handler h=new Handler();,12.AsyncCallback callback=new AsyncCallback(h.Callback),13./,将请求对象作为状态对象进行传递,14.req.BeginGetResponse(callback,req);,15.,16.,17.,异步请求,/,处理程序,18.public class Handler,19.,20.public void Callback(IAsyncResult ar),21.,22./,从请求状态中获取处理对象,23.HttpWebRequest req=(HttpWebRequest)ar.AsyncState;,24./,获取响应对象,26.HttpWebResponse res=(HttpWebResponse)req.EndGetResponse(ar);,异步请求,27./,开示读取响应流,28.Stream s=res.GetResponseStream();,29.,30.StreamReader sr=newStreamReader(s,Encoding.ASCII);,31.StringBuilder sb=new StringBuilder();,32.char data=new char1024;,33.int nBytes;,34.do,35.,36.nBytes=sr.Read(data,0,(int)1024);,37.sb.Append(data);,38.while(nBytes=1024);,39.,具体的,HTTP-GET,请求,class Tester,static void Main(string args),Trace.Listeners.Add(new TextWriterTraceListener(Console.Out);,Trace.AutoFlush=true;,Console.WriteLine(-HTTP GET-);,string urlGet=localhost/Woodgrove/Bank.asmx/GetAccount?acctID=1;,GetData(urlGet,GET,);,public static void GetData(string url,string contentType,string method,string content,params string headers),Stream s;,HttpWebRequest req=(HttpWebRequest)WebRequest.Create(url);,foreach(string header in headers),req.Headers.Add(header);,if(method.Length 0),req.Method=method;,if(contentType.Length 0),req.ContentType=contentType;,if(content.Length 0),req.ContentLength=content.Length;,s=req.GetRequestStream();,StreamWriter sw=new StreamWriter(s);,sw.Write(content);,sw.Close();,DisplayRequest(req);,HttpWebResponse res=(HttpWebResponse)req.GetResponse();,DisplayResponse(res);,public static void DisplayRequest(HttpWebRequest req),Trace.WriteLine(*Request Start*);,Trace.WriteLine(req.RequestUri.ToString();,DisplayHeaders(req.Headers);,Trace.WriteLine(*Request End*);,public static void DisplayResponse(HttpWebResponse hresp),Trace.WriteLine(null);,Trace.WriteLine(*Response Start*);,Trace.WriteLine(hresp.StatusCode);,Trace.WriteLine(hresp.StatusDescription);,DisplayHeaders(hresp.Headers);,DisplayContent(hresp);,Trace.WriteLine(*Response End*);,Trace.WriteLine(null);,public static void DisplayContent(HttpWebResponse response),Stream stream=response.GetResponseStream();,if(stream!=null),StreamReader sr=new StreamReader(stream,Encoding.ASCII);,Trace.WriteLine(sr.ReadToEnd();,小结,&,问题讨论,孔子说:,“,学而不思则罔,思而不学则殆。,”,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服