仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 757|回复: 11
打印 上一主题 下一主题

[学习教程] ASP.NET编程:不“复杂”的HttpClient仓酷云

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:16:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在CSDN里搜索一下“初学”两字,竟有三百余篇帖子(也许更多)。有些帖子说,有了asp的基础,只要15天就能很熟悉了,我甚感自己的愚钝。更多帖子是向大家请教初学者适合看书。两个多月的时间(当然平常杂事比较多。Web可以打下世界,最主要的元勋就是HTTP;HTTP可以立功立业,最主要的缘故原由就是它的复杂。
微软在.NETFramework4.5中为人人带来了System.Net.Http.HttpClient,既然叫HttpClient,我想应当投合了HTTP复杂的特征,应当会比HttpWebRequest更复杂。
在之前的博文“jQuery能做到,PHP能做到,C#也能做到”中也切实其实发明用HttpClient倡议HTTPPOST哀求并传送urlquerystring参数,比用HttpWebRequest更复杂。因而盘算把基于HttpWebRequest的完成改成基于HttpClient的完成。
基于HttpWebRequest的完成中有设置UserAgent的代码:
  1. varwebRequest=WebRequest.Create(url)asHttpWebRequest;webRequest.UserAgent="CNBlogs";
复制代码
原本觉得HttpClient也有一样的UserAgent属性,因而想如许写:
  1. varhttpClient=newHttpClient();httpClient.UserAgent="CNBlogs";//毛病的代码
复制代码
了局发明HttpClient基本没有UserAgent这个属性。
因而,找啊找,终究找到了一个UserAgent:
  1. varhttpClient=newHttpClient();httpClient.DefaultRequestHeaders.UserAgent
复制代码
觉得就是它了,却发明这里的UserAgent是只读属性。
再一看它的范例是HttpHeaderValueCollection<ProductInfoHeaderValue>,能够Add,Add的参数范例是ProductInfoHeaderValue,因而newProductInfoHeaderValue,机关函数的参数范例是ProductHeaderValue,因而newProductHeaderValue。代码以下:
  1. varhttpClient=newHttpClient();httpClient.DefaultRequestHeaders.UserAgent.Add(newProductInfoHeaderValue(newProductHeaderValue("CNBlogs")));
复制代码
运转代码一看,切实其实失掉了想要的UserAgent。顺藤摸瓜终究摸到了,但有些庞大。
换了根藤摸,摸到了一个略微复杂些的瓜,如许也能够:
  1. varhttpClient=newHttpClient();httpClient.DefaultRequestHeaders.UserAgent.Add(newProductInfoHeaderValue("CNBlogs",null));
复制代码
依据实践需求,必要在UserAgent中设置邮件地点,因而代码改成:
  1. varhttpClient=newHttpClient();httpClient.DefaultRequestHeaders.UserAgent.Add(newProductInfoHeaderValue(newProductHeaderValue("contact@cnblogs.com")));
复制代码
运转了局居然报错:
failed:System.FormatException:Theformatofvaluecontact@cnblogs.comisinvalid.
atSystem.Net.Http.Headers.HeaderUtilities.CheckValidToken(Stringvalue,StringparameterName)
atSystem.Net.Http.Headers.ProductHeaderValue..ctor(Stringname)
而在HttpWebRequest中是能够的:
  1. varwebRequest=WebRequest.Create(url)asHttpWebRequest;webRequest.UserAgent="contact@cnblogs.com";
复制代码
摸了半天,本来摸到的是半生不熟的瓜。。。
算了,仍是乞助摸瓜妙手Google吧。。。找到了HowtouseHttpClienthandlers中的一行代码:
  1. httpClient.DefaultRequestHeaders.Add("user-agent","...");
复制代码
妙手一脱手,就知有无,改成这个代码就可以弄定:
  1. varhttpClient=newHttpClient();httpClient.DefaultRequestHeaders.Add("UserAgent","contact@cnblogs.com");
复制代码
这个应当是HtppClient中设置UserAgent最复杂的办法,HttpWebRequest的对应完成是:
  1. varwebRequest=WebRequest.Create(url)asHttpWebRequest;webRequest.Headers.Add("UserAgent","contact@cnblogs.com");
复制代码
弄定是弄定了,原觉得HttpClient会比HttpWebRequest更复杂。但是如今设置UserAgent这么复杂的操纵,利用HttpWebRequest信手拈来,只需输出“.u”,智能感知就可以找到;利用HttpClient反而有些贫苦,不但没有智能感知,并且要手动输出字符串"UserAgent"。
我想尽年夜多半人利用HttpClient设置UserAgent时,起首想到的是HttpClient.UserAgent。优异的计划应当是用户想到那里,它就呈现在那里。而不“复杂”的HttpClient却要和用户捉迷躲。
HttpClient与HttpWebRequest事实有甚么区分,为何要存心显得与HttpWebRequest纷歧样?
MSDN上是这么说:
Bydefault,HttpWebRequestwillbeusedtosendrequeststotheserver.

IfanappusingHttpClientandrelatedclassesintheSystem.Net.Httpnamespaceintendstodownloadlargeamountsofdata(50megabytesormore).
仅仅由于呼应哀求的数据量年夜,HttpClient就与HttpWebRequest不同云云年夜,这是站不住脚的来由。
厥后在HenriksBlog中找到如许一句话:
ThedefaultHttpClientisthesimplestwayinwhichyoucanstartsendingrequests.AsingleHttpClientcanbeusedtosendasmanyHTTPrequestsasyouwantconcurrentlysoinmanyscenariosyoucanjustcreateoneHttpClientandthenusethatforallyourrequests.
本来谜底在这里!HttpClient最不同凡响的中央是统一个HttpClient实例能够收回屡次哀求,每次哀求是能够是完整分歧的URL。而一个HttpWebRequest实例对应于一个Url的一次哀求。这才是HttpClient与HttpWebRequest的最年夜区分地点。
原本写这篇博客是想品评HttpClient,写的过程当中才发明本来是本人对HttpClient不敷懂得。可是仍然以品评扫尾,HttpClient计划得不敷复杂。
就安全性而言,net网页编程已经远远低于VB.NET,更无法与安全性著称的C#相比。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-19 18:04:58 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
冷月葬花魂 该用户已被删除
板凳
发表于 2015-1-24 15:18:35 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-1-27 06:48:50 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
admin 该用户已被删除
5#
发表于 2015-2-4 03:00:56 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
因胸联盟 该用户已被删除
6#
发表于 2015-2-5 11:52:24 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
爱飞 该用户已被删除
7#
发表于 2015-2-7 10:06:23 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
简单生活 该用户已被删除
8#
发表于 2015-2-21 16:49:42 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
只想知道 该用户已被删除
9#
发表于 2015-3-6 12:34:47 | 只看该作者
对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
10#
发表于 2015-3-7 01:34:33 | 只看该作者
能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
变相怪杰 该用户已被删除
11#
 楼主| 发表于 2015-3-14 00:33:50 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
海妖 该用户已被删除
12#
发表于 2015-3-20 22:41:15 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-6 21:09

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表