`
chanshui
  • 浏览: 84582 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

http协议基本原理

阅读更多

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.1http协议基本原理
url,uri 和 urn
uri,uniform resource identifier
统一资源标识符,用字符串惟一标识信息资源
url,uniform resource locator
统一资源定位符,通过"通讯协议+网络地址"字符串惟一标识信息位置和资源访问途径
urn,uniform resource name
统一资源命名符,用于惟一标识全球范围内由专门机构负责的稳定的信息资源
3.1http协议基本原理
http 协议概述
url 结构
无状态协议
在客户端发出 http 请求并收到服务器端响应后,连接就会断开,下次的访问与前一次的访问无关,因此如果需要维护客户端的信息,必须在服务器端维持状态数据
实例
http://host[:port][path[ querystring]]
http://www.woodgrovebank.com/accts.asp accno=23
主机
路径
查询字符串
3.1.1 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 char[1024];
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 = new streamreader(s,encoding.ascii);
31. stringbuilder sb = new stringbuilder();
32. char [] data = new char[1024];
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 = "http://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());
}
}
小结 & 问题讨论
孔子说:"学而不思则罔,思而不学则殆."
*
*
本章概述:
xml web service是建立在web技术之上的.http协议,xml语言和soap协议是web服务的三种核心技术,这三种技术构成了web服务的基础.开发人员在使用这三种技术开发web服务时,有必要理解这三种技术是如何工作的,同时也需了解.net framework对这三种技术提供的具体支持.
教学目标:
理解http请求和响应的结构,http协议是internet上广泛应用的协议,理解它的原理对提高程序效率有很大帮助
掌握使用.net framework发送http get和post请求并处理响应的方法
掌握使用xsd描述数据类型,这是.net中关系数据(sql server)和层次数据结构(xml)转换的基础
理解soap请求和响应的结构
掌握使用.net framework发送soap请求并处理响应的方法
教学重点:
掌握http,xml和soap在xml web service中起的作用
掌握发送http请求并处理响应的方法
掌握发送soap请求并处理响应的方法
教学难点:
理解各个协议的作用以及他们互相间的交互原理
注意:
本章的推荐教学课时为 4 课时;
加下划线为即将学到的内容;
课堂提问:
http 协议,xml和 soap 协议有什么共同的特点
这三种技术都是在 internet 中被广泛采用的标准,而不是某一厂商制定的标准,因此使用这三种技术开发的 web 服务使分布式应用程序的应用领域更加广泛.
*
要点:
本节主要达到一个目的:
掌握http协议的基本原理,包括http头的作用,get与post方法.http协议是internet上广泛应用的协议,理解它的原理对提高程序效率有很大帮助.(略讲)
注意:
加下划线为即将学到的内容.
*
重点:
xml web service 的数据传输使用 http 协议,因此掌握一些 http 的工作原理对于掌握 xml web service 非常重要;
介绍 http 协议的请求和响应的结构以及常用的请求方法;
课堂提问:
什么是 http 协议,它有哪些特点
http 协议就是超文本传输协议(hypertext transfer protocol),是由 w3c 组织制定的标准协议,用于在 internet 中传输 html 文件,已被业界广泛使用.
*
重点:
uri,url 和 urn 是 internet 中经常使用的一系列术语,要求学生掌握这些技术的名称;
在 http 协议中通常使用 url 来定位资源;
难点:
uri 中包括了 url 和 urn,是二者的超集;
url 最大的缺点在于:一旦信息资源的存放地点发生变化, url 也必须进行相应的改变;
参考:
url,uri 和 urn 的定义分别摘自 msdn 的相关章节;
课堂提问:
xml 技术如何使用 url,uri 和 urn
xml 中使用 uri,url 和 urn 引用标识元素的命名空间.
*
重点:
掌握 url 的书写语法;
协议的状态是指下次传输可以"记住"前次传输信息的能力;
难点:
要求学生注意书写 url 时斜线的方向;
课堂提问:
为什么在实例中没有指定端口号
如果在 url 中没有指定端口号,系统会根据使用的协议确定缺省端口号,对于 http 协议而言,缺省的端口号是80;
参考:
常用协议的端口号可以参考系统文件夹" \system32\drivers\etc\ "中的" services "文件,该文件可以使用文本编辑工具打开.
*
重点:
幻灯片中的例子是向服务器发送的一个查询请求,条件是消息主体中的 "symbol=msft";
http 查询支持的方法包括:
options;
get;
head;
post;
delete;
trace;
connect;
扩展方法;
注意:
在讲解时注意使用幻灯片中的箭头动画将结构和例子相对应,这样可以方便学生理解,不要忘记在 http 标头和消息主体之间需要保留一个空行.
*
重点:
本例是对上一张幻灯片中 http 请求的响应信息;
注意:
在讲解时注意使用幻灯片中的箭头动画将结构和例子相对应,这样可以方便学生理解,不要忘记在 http 标头和消息主体之间需要保留一个空行;
课堂讨论:
http 响应消息主体的格式是什么 描述幻灯片例子中响应消息的的组成部分;
访问 web 服务时, http 响应消息的主体采用 xml 的格式,幻灯片中首先是关于 xml 的操作指令,然后包含了一个名为 stock 的元素,该元素中有两个属性,分别为 msft 和 price.
*
重点:
http 的 get 和 post 是比较常用的两个向服务器发送请求的方法,适合在 web 服务中使用,因为两种方法与程序中函数的调用过程非常相似:传递参数给方法,执行后返回结果;
注意:
要求学生掌握两种方法的调用格式.
*
重点:
相比之下,get 方法比较简单但功能较弱,post 方法比较复杂但功能较强.
*
要点:
本节主要达到两个目的:
掌握使用.net framework发送http请求的方法(精讲+演示)
掌握使用.net framework处理http响应的方法(精讲+演示)
注意:
加下划线为即将学到的内容.
*
重点:
主要介绍 .net framework 中与 http 有关的类,以及如何使用这些类编写,发送 http 访问请求的应用程序;
注意:
本章重点介绍 xml web service 使用的底层技术,但应当告诉学生实际开发 web 服务时,可以使用更高层的技术,不过了解些底层技术对于掌握 xml web service 的整体工作原理有很大帮助.
*
重点:
.net 中与 http 相关的类主要有两种:一种用于封装具体的 http 请求和响应,另一种用于读写具体的 http 数据流;
难点:
webrequest 和 webresponse 是两个抽象类,定义了与网络访问相关的一些公共行为, httpwebrequest 和httpwebresponse 是他们的派生类,负责处理和 http 相关的访问请求和响应,应当向学生说明这些类之间的关系;
注意:
可以提示学生使用 msdn 查找这些类的具体声明信息,或者在编程过程中使用 msdn 寻求帮助.
*
重点:
如果 webrequest 的 create 方法包含参数 "http://" 或 "https://",则返回 httpwebrequest 实例;
难点:
.net framework 中的许多类都预先定义了同步和异步两种调用手段,异步调用实际上利用了系统提供的多线程机制,使得客户端在等待响应结果的同时还可以进行其他操作;
注意:
会在下一张幻灯片中详细介绍同步调用和异步调用.
*
重点:
结合前张幻灯片中的 begin 和 end 方法对(如 begingetrequeststream 和 endgetrequeststream 方法对)解释具体的调用形式;
注意:
提示学生使用" wincv "查看相关类的方法声明原型.
*
注意:
参考教材上的代码示例讲解.
*
*
*
注意:
参考教材上的代码示例讲解.
*
*
*
*
*
*
*
*
*

以上内容来源:http://computer.cdu.edu.cn:8080/ad/1252641366515/Chapter_03.ppt
63档(www.63da.com)提供索引并缓存,与来源页面无关
分享到:
评论

相关推荐

    HTTP协议基本原理PPT介绍

    第1章 XML Web Service 第2章 XML Web Service 体系结构 第3章 XML Web Service 基础技术 第4章 使用 XML Web Service 第5章 实现一个简单的 XML Web Service 第6章 部署和发布 XML Web Service ...

    http协议的基本原理

    http协议的基本原理讲解,课件,自学资料

    TCPIP协议原理flash动画讲解视频

    首先,视频会介绍TCP/IP协议的基本概念,包括四层模型的结构和功能。应用层是最高层,包含了如HTTP、FTP、SMTP等常见协议,它们定义了应用程序如何通过网络发送和接收数据。 接着,视频将详细解释传输层,尤其是TCP...

    计算机网络原理实验报告---Wireshark实验:HTTP协议分析

    通过对HTTP请求报文和响应报文的详细分析,我们可以理解HTTP协议的基本结构和工作原理。 **HTTP协议基础** HTTP(超文本传输协议)是应用层协议,用于客户端和服务器之间的通信。它基于TCP/IP协议栈,以请求/响应...

    http协议工作原理讲义

    本文描述http协议基本工作原理,是web网站开发人员了解http协议指导丛书

    HTTP协议原理+实践 Web开发工程师必学.txt

    在实际Web开发过程中,开发者需要熟练掌握HTTP协议的基本原理及其应用。例如,在设计RESTful API时,合理选择HTTP方法和状态码,确保API的正确性和一致性;在前端开发中,利用HTTP缓存机制优化用户体验等。 #### 十...

    HTTP协议的作用原理

    ### HTTP协议的作用原理详解 HTTP(Hypertext Transfer Protocol)是一种用于从Web服务器传输超文本到本地浏览器的应用层协议,其作用原理主要包括三个关键步骤:连接、请求与应答。 #### 1. 连接 在HTTP通信开始...

    网络协议TCP/IP实验七 HTTP 协议分析实验

    实验选取了常见的HTTP协议作为研究对象,通过对HTTP协议的深入剖析,使学生能够掌握HTTP协议的基本原理、报文格式以及其工作流程。 #### 实验环境配置 - **操作系统**:Windows 7 - **网络平台**:实验室内部...

    超文本传输协议工作原理.docx

    - **HTTPS**:为了提高安全性,HTTP协议可以通过加入SSL/TLS加密层升级为HTTPS协议,这样可以保护数据的完整性和机密性,防止中间人攻击。 #### 七、HTTP与其他网络协议的关系 尽管TCP/IP协议是互联网上最常用的...

    TCP/IP协议原理

    对于网络管理员来说,掌握TCP/IP协议的基本原理和工作流程至关重要,尤其是在进行网络故障排查时。常见的网络故障排查方法包括: - 使用ping命令检测网络连通性。 - 通过traceroute/tracert命令追踪数据包经过的路径...

    MPEG基本原理和协议分析(part1)

    本书是MPEG基本原理的经典教材,内容通俗易读,是一本不可多得的好书! 前言: MPEG 是当今最流行的音频/ 视频压缩技术之一。这是因为它不仅仅是一个单独的标准,而是一系 列以相似理论为基础且适合于不同应用的...

    Http协议内容总结 http协议包含哪些内容 Http协议的请求方法 Http协议实现的原理机制 get与post请求的区别

    通过以上分析,我们不仅了解了HTTP协议的基本结构和工作原理,还深入探讨了各种请求方法的特点及适用场景,以及GET与POST请求的关键差异。此外,还介绍了常见的HTTP状态码,这对于理解服务器与客户端之间的交互至关...

    福建师范大学《TCPIP协议原理与编程》在线作业一附参考答案(2021年春季学期).docx

    17. 浏览器与服务器通信:使用HTTP协议传输网页。 18. 数据链路层:数据服务单元是帧。 19. 电子邮件问题:发送邮件出错可能是POP3服务器地址错误。 20. 网络协议:协议是为了网络信息传递而共同遵守的约定,TCP/...

    Domino HTTP服务器基本原理

    ### Domino HTTP服务器基本原理 #### 一、Domino HTTP服务器结构与工作原理 Domino HTTP服务器作为IBM Domino环境中的一个重要组成部分,主要用于处理HTTP协议请求,为用户提供基于Web的服务。其核心功能是通过...

    TCPIP协议原理_电子科技大学课件ppt.rar

    TCP/IP协议原理是计算机网络通信的核心,它定义了数据在网络中的传输方式和规则。电子科技大学的这份PPT课件深入浅出地...通过学习,不仅可以理解网络通信的基本原理,还能为解决网络问题和优化网络性能打下坚实基础。

    webService的基本原理

    其基本原理主要依赖于三个核心协议:SOAP、WSDL和UDDI。 SOAP(Simple Object Access Protocol)是Web Services的核心通信协议,用于定义消息结构和传递方式。SOAP消息通常是XML格式,确保了跨平台和跨语言的互操作...

Global site tag (gtag.js) - Google Analytics