下班时间到了,Web Service小姐的座位空着,可能已经走了。WCF先生悠哉游哉的出了公司大门。
高挑的身材,长发披肩,WCF先生看着前面的美女,不禁快走几步,想看看是否是"背影杀手"。由于走的太急了,没注意脚下的台阶,感觉脚下一空,从美女的身边跌落,胳膊擦到了她的后背,人重重地摔在了台阶上,如同一只趴在地上的青蛙。
胳膊很痛,笔记本甩出了很远,周围的东西好像是在另一个世界。WCF先生趴了几分钟,经过的人一边用疑惑的眼光看着他一边快步的走过。突然觉得眼前一暗,抬头一看,竟然是Web Service小姐,赶紧窘迫的站起来。
"痛吗?", Web Service小姐用手拍着WCF先生身上的土问道。
"有点。", WCF先生皱着眉头回答道。
"怎么这么不小心。", Web Service小姐脸上露出同情。
"着急去赶公司的班车,没注意台阶", WCF先生不好意思的回答。
刚走了几步,WCF先生发现自己的脚扭了,一走路疼的受不了。
"我扶你去那里坐一会吧。",Web Service小姐扶着WCF先生进了公司旁边的快餐店。晚风吹来,虽然脚很痛,WCF先生还是赶紧很清爽。
快餐店不大,但是窗明几净,橙黄色的桌面让人很有食欲,保洁人员随时清理着产生的垃圾。Web Service小姐点了两份饭,又特意点了一份脆骨,说是给他补补钙,这样伤好的快些。
感觉有些不好意思,吃完东西,两人要了两杯果汁。WCF先生打开了笔记本,"我们继续昨天的话题吧。"。
"不用了,你的脚受伤了。", Web Service小姐关切的说。
"没事,不疼了"。 WCF先生忍着疼痛,装出一脸轻松的样子。
"那好吧。", Web Service小姐略带歉意的说,同时将桌上的餐具拿到了一边。
"上次我们只是实现了获取数据的接口,但是很多时候用户需要增删改的操作。现在我们就将上次那个Delete方法完善一下"。 WCF先生打开IBookService.cs,为DeleteBook方法增加了参数,并更改了返回值的类型。
然后又打开BookService.svc.cs,改了对应的实现方法。
"现在这个例子是在内存中操作的,所以我用了这样的代码模拟了一下效果,在实际应用中可以增删改真正的数据库或其他资源。", WCF先生一边噼里啪啦的敲着键盘,一边解说着。
"现在我们看一下运行效果。首先用一个不存在的ISBN做参数,看,三条数据都返回来了。"
"现在我们用一个实际存在的ISBN做参数。", WCF先生将参数改成了"ISBN 001"。果然有一条结果被删掉了。
"可是...",Web Service小姐咬着嘴唇想了一下,"这个恐怕有问题,如果有些恶意客户通过输入URL来删除别人的数据怎么办?"。
"嗯,有道理,你不提这个我倒是忘了说了,这个就是GET和POST的区别"。
WCF先生向后靠在椅背上说道:
"其实当初设计HTTP请求的时候,定义了很多种方法,每种方法都是应用于不同的场景: GET方法用来从服务器上获取资源; HEAD方法用来获取资源的一些信息而不是资源本身; POST方法用来从客户端向服务器端发送信息,比如在线填写表单,发送大量复杂的数据到服务器等等; PUT方法用来上传文档或者更新文档到服务器,DELETE方法用来删除服务器上的资源; TRACE方法用来给客户查看他发出的请求都经过了哪些代理或者中转服务器; OPTIONS方法用户知道有哪些方法可以用来处理服务器的资源; CONNECT方法用来为用户建立一个对远程主机的透明连接,通常是通过一个HTTP代理来实现HTTPS通信。"
"回头我会把这些区别发到你的邮箱里的。", WCF先生看到Web Service小姐有些迷茫,就善解人意的说道。
"谢谢。", Web Service小姐露出甜甜的一笑。
"但是现存的Web框架中,并没有完全支持这些方法,或者支持的不好。所以现在常用的就是GET和POST方法。", WCF先生继续说道,"实际上大部分情况下,POST方法就已经足够用。用POST方法,用户就不能通过URL来删除资源了。现在我们来试一下"。
WCF先生打开IBookService.cs,改动了DeleteBook方法的定义。
"看,把HTTP方法从GET改成POST就这么简单。我们再通过URL方法访问一下。", WCF又在IE中进行了刚才的Delete操作。
"嗯,果然无法通过URL访问了,这样安全多了。",Web Service小姐点点头,乌黑的刘海也随着上下摇动。
"现在就来用POST方法来访问它。", WCF先生新建了一个Web Form,放了两个输入框,第一个用来输入要请求的地址,第二个用来显示返回的结果。
"这里是HTML代码。", WCF先生打开代码视图,让Web Service小姐看了一眼。
- <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="WebForm1.aspx.cs"Inherits="WcfService1.WebForm1"%>
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <htmlxmlns="http://www.w3.org/1999/xhtml">
- <headrunat="server">
- <title></title>
- </head>
- <body>
- <formid="form1"runat="server">
- <div>
- Please input service address:<br/>
- <asp:TextBoxID="txtServiceAddress"runat="server"Width="363px"></asp:TextBox>
- <asp:ButtonID="btnGo"runat="server"onclick="btnGo_Click"Text="Go"/>
- <br/>
- Result:
- <br/>
- <asp:TextBoxID="txtResult"runat="server"Height="98px"TextMode="MultiLine"
- Width="496px"></asp:TextBox>
- <br/>
- </div>
- </form>
- </body>
- </html>
"现在我们来写C#代码。",WCF先生打开WebForm1.aspx.cs。编程破万行,下笔如有神。不到两分钟,代码就写完了。
Web Service小姐看得有点傻眼,直到WCF先生说"现在我们看一下结果吧。"才回过神来。
WCF先生在IE中打开WebForm1.aspx,在第一个框里输入刚才在URL中无法直接使用的DeleteBook的请求。
"Let's go.", Web Service小姐条件反射般的拿起包向外走,走到门口感觉有些奇怪,还没弄完怎么就走了?回头一看,WCF先生还坐在那里,奇怪的看着她。返回桌前,才明白,原来WCF先生点了Go按钮,并不是要走。
WCF先生指着电脑屏幕让她看,Web Service小姐看到了如下的一幕。
"不错,如果我们把POST改成GET会如何", Web Service小姐的提问让WCF先生对美女无脑这句话产生了深深的怀疑。非常熟练的将POST方法改成了GET方法。
"Let's Go", WCF先生编译了一下,打开网页,输入刚才DeleteBook的地址,然后点击了Go按钮。这次Web Service小姐没走。
输入框里显示了和刚才直接输入URL时一样的错误信息。
两人都很满意的靠在椅背上喝了口果汁。夕阳马上就要落下,染得天边一片红霞。马尾辫,白色T恤,淡蓝色短裙,Web Service小姐在这红色背景的映衬下显得更加妩媚了。WCF先生低头一看,发现鞋带松了,忍不住俯身去系...
原文链接:http://www.cnblogs.com/time-is-life/archive/2012/09/13/2683911.html
2010-08-03 21:59:56
2018-06-04 11:23:05
2016-01-29 16:02:06
2009-07-09 10:25:05