C#Uriuri.parse的用法法

AdSense专题
Powered By
Designed by Han'space  1、WebBrowser常用属性.Refresh();//刷新.GoBack();//后退.GoForward();//前进.Navigate(new Uri(address)); //打开链接.Dock = DockStyle.F //完全停靠在父容器中.ScriptErrorsSuppressed = //关闭错误显示Uri a = new Uri(WebBrowser.Document.ActiveElement.GetAttribute("href"));//获取点击中的链接地址  2、WebBrowser常用事件处理.Navigated += new WebBrowserNavigatedEventHandler(WebBrowser_Navigated);//加载中处理事件.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser _DocumentCompleted);//页面加载完成处理事件.NewWindow += new CancelEventHandler(WebBrowser _NewWindow);//新的窗口中打开页面  3、事件处理函数  3.1、打开新连接// Navigates to the given URL if it is valid.private void Navigate(WebBrowser ,String address){if (String.IsNullOrEmpty(address))if (address.Equals("about:blank"))if (!address.StartsWith("http://")) address = "http://" +try{WebBrowser.Navigate(new Uri(address));}catch (System.UriFormatException){}// Updates the URL in TextBoxAddress upon navigation.private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e){toolStripTextBox1.Text = WebBrowser.Url.ToString();}}  3.2、新窗口处理private void WebBrowser_NewWindow(object sender, CancelEventArgs e){WebBrowser webb = new WebBrowser();WebBrowser = WebBrowsers[webtab.SelectedIndex];webb.Name = "webb" + webtab.TabCUri a = new Uri(WebBrowser.Document.ActiveElement.GetAttribute("href"));webb.Url =webb.Dock = DockStyle.FTabPage p = new TabPage();p.Controls.Add(webb);webtab.TabPages.Add(p);webtab.SelectedTab =webb.NewWindow += new CancelEventHandler(WebBrowser_NewWindow);e.Cancel =//取消在默认浏览器中打开}C#中HttpWebRequest的用法详解
投稿:shichen2014
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了C#中HttpWebRequest的用法,以实例的形式详细叙述了HttpWebRequest类中GET与POST的用法,非常具有参考借鉴价值,需要的朋友可以参考下
本文实例讲述了C#中HttpWebRequest的用法。分享给大家供大家参考。具体如下:
HttpWebRequest类主要利用HTTP 协议和服务器交互,通常是通过 GET 和 POST 两种方式来对数据进行获取和提交。下面对这两种方式进行一下说明:
GET 方式:
GET 方式通过在网络地址附加参数来完成数据的提交,比如在地址 http://www.jb51.net/?hl=zh-CN 中,前面部分 http://www.jb51.net表示数据提交的网址,后面部分 hl=zh-CN 表示附加的参数,其中 hl 表示一个键(key), zh-CN 表示这个键对应的值(value)。
程序代码如下:&
代码如下:HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.jb51.net?hl=zh-CN" );
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
//在这里对接收到的页面内容进行处理
使用 GET 方式提交中文数据。
GET 方式通过在网络地址中附加参数来完成数据提交,对于中文的编码,常用的有 gb2312 和 utf8 两种。
用 gb2312 方式编码访问的程序代码如下:
代码如下:Encoding myEncoding = Encoding.GetEncoding("gb2312");
string address = "http://www.jb51.net/?" + HttpUtility.UrlEncode("参数一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address);
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
//在这里对接收到的页面内容进行处理
在上面的程序代码中,我们以 GET 方式访问了网址 http://www.jb51.net ,传递了参数“参数一=值一”,由于无法告知对方提交数据的编码类型,所以编码方式要以对方的网站为标准。
POST 方式:
POST 方式通过在页面内容中填写参数的方法来完成数据的提交,参数的格式和 GET 方式一样,是类似于 hl=zh-CN&newwindow=1 这样的结构。
程序代码如下:
代码如下:string param = "hl=zh-CN&newwindow=1";
byte[] bs = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.jb51.net/" );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = bs.L
using (Stream reqStream = req.GetRequestStream())
&& reqStream.Write(bs, 0, bs.Length);
using (WebResponse wr = req.GetResponse())
&& //在这里对接收到的页面内容进行处理
在上面的代码中,我们访问了 http://www.jb51.net 的网址,分别以 GET 和 POST 方式提交了数据,并接收了返回的页面内容。然而,如果提交的参数中含有中文,那么这样的处理是不够的,需要对其进行编码,让对方网站能够识别。&
使用 POST 方式提交中文数据
POST 方式通过在页面内容中填写参数的方法来完成数据的提交,由于提交的参数中可以说明使用的编码方式,所以理论上能获得更大的兼容性。
用 gb2312 方式编码访问的程序代码如下:&
代码如下:Encoding myEncoding = Encoding.GetEncoding("gb2312");
string param = HttpUtility.UrlEncode("参数一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding) + "&" + HttpUtility.UrlEncode("参数二", myEncoding) + "=" + HttpUtility.UrlEncode("值二", myEncoding);
byte[] postBytes = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://www.jb51.net/" );
req.Method = "POST";
req.ContentType = "application/x-www-form-charset=gb2312";
req.ContentLength = postBytes.L
using (Stream reqStream = req.GetRequestStream())
&& reqStream.Write(bs, 0, bs.Length);
using (WebResponse wr = req.GetResponse())
&& //在这里对接收到的页面内容进行处理
从上面的代码可以看出, POST 中文数据的时候,先使用 UrlEncode 方法将中文字符转换为编码后的 ASCII 码,然后提交到服务器,提交的时候可以说明编码的方式,用来使对方服务器能够正确的解析。&
用C#语言写的关于HttpWebRequest 类的使用方法
代码如下:using S
using System.Collections.G
using System.IO;
using System.N
using System.T
namespace HttpWeb
&&& /// &summary&
&&& ///& Http操作类
&&& /// &/summary&
&&& public static class httptest
&&&&&&& /// &summary&
&&&&&&& ///& 获取网址HTML
&&&&&&& /// &/summary&
&&&&&&& /// &param name="URL"&网址 &/param&
&&&&&&& /// &returns& &/returns&
&&&&&&& public static string GetHtml(string URL)
&&&&&&&&&&& WebR
&&&&&&&&&&& wrt = WebRequest.Create(URL);
&&&&&&&&&&& wrt.Credentials = CredentialCache.DefaultC
&&&&&&&&&&& WebR
&&&&&&&&&&& wrp = wrt.GetResponse();
&&&&&&&&&&& string reader = new StreamReader(wrp.GetResponseStream(), Encoding.GetEncoding("gb2312")).ReadToEnd();
&&&&&&&&&&& try
&&&&&&&&&&& {
&&&&&&&&&&&&&&& wrt.GetResponse().Close();
&&&&&&&&&&& }
&&&&&&&&&&& catch (WebException ex)
&&&&&&&&&&& {
&&&&&&&&&&&&&&&
&&&&&&&&&&& }
&&&&&&&&&&&
&&&&&&& /// &summary&
&&&&&&& /// 获取网站cookie
&&&&&&& /// &/summary&
&&&&&&& /// &param name="URL"&网址 &/param&
&&&&&&& /// &param name="cookie"&cookie &/param&
&&&&&&& /// &returns& &/returns&
&&&&&&& public static string GetHtml(string URL, out string cookie)
&&&&&&&&&&& WebR
&&&&&&&&&&& wrt = WebRequest.Create(URL);
&&&&&&&&&&& wrt.Credentials = CredentialCache.DefaultC
&&&&&&&&&&& WebR
&&&&&&&&&&& wrp = wrt.GetResponse();
&&&&&&&&&&& string html = new StreamReader(wrp.GetResponseStream(), Encoding.GetEncoding("gb2312")).ReadToEnd();
&&&&&&&&&&& try
&&&&&&&&&&& {
&&&&&&&&&&&&&&& wrt.GetResponse().Close();
&&&&&&&&&&& }
&&&&&&&&&&& catch (WebException ex)
&&&&&&&&&&& {
&&&&&&&&&&&&&&&
&&&&&&&&&&& }
&&&&&&&&&&& cookie = wrp.Headers.Get("Set-Cookie");
&&&&&&&&&&&
&&&&&&& public static string GetHtml(string URL, string postData, string cookie, out string header, string server)
&&&&&&&&&&& return GetHtml(server, URL, postData, cookie, out header);
&&&&&&& public static string GetHtml(string server, string URL, string postData, string cookie, out string header)
&&&&&&&&&&& byte[] byteRequest = Encoding.GetEncoding("gb2312").GetBytes(postData);
&&&&&&&&&&& return GetHtml(server, URL, byteRequest, cookie, out header);
&&&&&&& public static string GetHtml(string server, string URL, byte[] byteRequest, string cookie, out string header)
&&&&&&&&&&& byte[] bytes = GetHtmlByBytes(server, URL, byteRequest, cookie, out header);
&&&&&&&&&&& Stream getStream = new MemoryStream(bytes);
&&&&&&&&&&& StreamReader streamReader = new StreamReader(getStream, Encoding.GetEncoding("gb2312"));
&&&&&&&&&&& string getString = streamReader.ReadToEnd();
&&&&&&&&&&& streamReader.Close();
&&&&&&&&&&& getStream.Close();
&&&&&&&&&&& return getS
&&&&&&& /// &summary&
&&&&&&& /// Post模式浏览
&&&&&&& /// &/summary&
&&&&&&& /// &param name="server"&服务器地址 &/param&
&&&&&&& /// &param name="URL"&网址 &/param&
&&&&&&& /// &param name="byteRequest"&流 &/param&
&&&&&&& /// &param name="cookie"&cookie &/param&
&&&&&&& /// &param name="header"&句柄 &/param&
&&&&&&& /// &returns& &/returns&
&&&&&&& public static byte[] GetHtmlByBytes(string server, string URL, byte[] byteRequest, string cookie, out string header)
&&&&&&&&&&& long contentL
&&&&&&&&&&& HttpWebRequest httpWebR
&&&&&&&&&&& HttpWebResponse webR
&&&&&&&&&&& Stream getS
&&&&&&&&&&& httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);
&&&&&&&&&&& CookieContainer co = new CookieContainer();
&&&&&&&&&&& co.SetCookies(new Uri(server), cookie);
&&&&&&&&&&& httpWebRequest.CookieContainer =
&&&&&&&&&&& httpWebRequest.ContentType = "application/x-www-form-urlencoded";
&&&&&&&&&&& httpWebRequest.Accept =
&&&&&&&&&&&&&&& "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
&&&&&&&&&&& httpWebRequest.Referer =
&&&&&&&&&&& httpWebRequest.UserAgent =
&&&&&&&&&&&&&&& "Mozilla/4.0 ( MSIE 6.0; Windows NT 5.1; SV1; M .NET CLR 1.1.4322)";
&&&&&&&&&&& httpWebRequest.Method = "Post";
&&&&&&&&&&& httpWebRequest.ContentLength = byteRequest.L
&&&&&&&&&&& S
&&&&&&&&&&& stream = httpWebRequest.GetRequestStream();
&&&&&&&&&&& stream.Write(byteRequest, 0, byteRequest.Length);
&&&&&&&&&&& stream.Close();
&&&&&&&&&&& webResponse = (HttpWebResponse)httpWebRequest.GetResponse();
&&&&&&&&&&& header = webResponse.Headers.ToString();
&&&&&&&&&&& getStream = webResponse.GetResponseStream();
&&&&&&&&&&& contentLength = webResponse.ContentL
&&&&&&&&&&& byte[] outBytes = new byte[contentLength];
&&&&&&&&&&& outBytes = ReadFully(getStream);
&&&&&&&&&&& getStream.Close();
&&&&&&&&&&& return outB
&&&&&&& public static byte[] ReadFully(Stream stream)
&&&&&&&&&&& byte[] buffer = new byte[128];
&&&&&&&&&&& using (MemoryStream ms = new MemoryStream())
&&&&&&&&&&& {
&&&&&&&&&&&&&&& while (true)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& int read = stream.Read(buffer, 0, buffer.Length);
&&&&&&&&&&&&&&&&&&& if (read &= 0)
&&&&&&&&&&&&&&&&&&&&&&& return ms.ToArray();
&&&&&&&&&&&&&&&&&&& ms.Write(buffer, 0, read);
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&&&&& /// &summary&
&&&&&&& /// Get模式
&&&&&&& /// &/summary&
&&&&&&& /// &param name="URL"&网址 &/param&
&&&&&&& /// &param name="cookie"&cookies &/param&
&&&&&&& /// &param name="header"&句柄 &/param&
&&&&&&& /// &param name="server"&服务器 &/param&
&&&&&&& /// &param name="val"&服务器 &/param&
&&&&&&& /// &returns& &/returns&
&&&&&&& public static string GetHtml(string URL, string cookie, out string header, string server)
&&&&&&&&&&& return GetHtml(URL, cookie, out header, server, "");
&&&&&&& /// &summary&
&&&&&&& /// Get模式浏览
&&&&&&& /// &/summary&
&&&&&&& /// &param name="URL"&Get网址 &/param&
&&&&&&& /// &param name="cookie"&cookie &/param&
&&&&&&& /// &param name="header"&句柄 &/param&
&&&&&&& /// &param name="server"&服务器地址 &/param&
&&&&&&& /// &param name="val"& &/param&
&&&&&&& /// &returns& &/returns&
&&&&&&& public static string GetHtml(string URL, string cookie, out string header, string server, string val)
&&&&&&&&&&& HttpWebRequest httpWebR
&&&&&&&&&&& HttpWebResponse webR
&&&&&&&&&&& Stream getS
&&&&&&&&&&& StreamReader streamR
&&&&&&&&&&& string getString = "";
&&&&&&&&&&& httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);
&&&&&&&&&&& httpWebRequest.Accept = "*/*";
&&&&&&&&&&& httpWebRequest.Referer =
&&&&&&&&&&& CookieContainer co = new CookieContainer();
&&&&&&&&&&& co.SetCookies(new Uri(server), cookie);
&&&&&&&&&&& httpWebRequest.CookieContainer =
&&&&&&&&&&& httpWebRequest.UserAgent =
&&&&&&&&&&&&&&& "Mozilla/4.0 ( MSIE 6.0; Windows NT 5.1; SV1; M .NET CLR 1.1.4322)";
&&&&&&&&&&& httpWebRequest.Method = "GET";
&&&&&&&&&&& webResponse = (HttpWebResponse)httpWebRequest.GetResponse();
&&&&&&&&&&& header = webResponse.Headers.ToString();
&&&&&&&&&&& getStream = webResponse.GetResponseStream();
&&&&&&&&&&& streamReader = new StreamReader(getStream, Encoding.GetEncoding("gb2312"));
&&&&&&&&&&& getString = streamReader.ReadToEnd();
&&&&&&&&&&& streamReader.Close();
&&&&&&&&&&& getStream.Close();
&&&&&&&&&&& return getS
希望本文所述对大家的C#程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具C#使用WebRequest抓取网页代码 - 为程序员服务
为程序员服务
C#使用WebRequest抓取网页代码
该静态函数执行一个 HTTP GET 操作,并将回应作为 String 返回。
/// &summary&
/// Get a response as a string, given a uri string.
/// &/summary&
/// &param name=&uriArg&&Specifies a uri such as && or @&file://X:\dir\myFile.html&&/param&
/// &returns&web response as a string.&/returns&
/// &example&
string uri = &http://www.google.zzz&; // note bad uri with zzz to exercise exception.
string s = GetWebPageResponse( uri );
Console.WriteLine( s );
/// catch ( WebException ex )
// wex.Message could be something like: The remote server returned an error: (404) Not Found.
string s = string.Format( &Request: {0}\nResult: {1}&, uri, ex.Message );
Console.WriteLine( s );
/// &/example&
static string GetWebPageResponse(string uriArg)
Stream responseStream = WebRequest.Create(uriArg).GetResponse().GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
return reader.ReadToEnd();
/// &summary&
/// Similar to GetWebPageResponse(string uriArg), but uses a user/pw to log in.
/// &/summary&
/// &param name=&uriArg&&e.g. &http://192.168.2.1&&/param&
/// &param name=&userArg&&e.g. &root&&/param&
/// &param name=&pwArg&&e.g. &admin&&/param&
/// &returns&string containing the http response.&/returns&
/// &example&
/// // Example to get a response with DHCP table from my LinkSys router.
/// string s = GetWebPageResponse( &http://192.168.2.1/DHCPTable.htm&, &root&, &admin& );
/// &/example&
static string GetWebPageResponse(string uriArg, string userArg, string pwArg)
Uri uri = new Uri(uriArg);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
CredentialCache creds = new CredentialCache();
// See /en-us/library/system.directoryservices.protocols.authtype.aspx for list of types.
const string authType = &basic&;
creds.Add(uri, authType, new NetworkCredential(userArg, pwArg));
req.PreAuthenticate =
req.Credentials = creds.GetCredential(uri, authType);
Stream responseStream = req.GetResponse().GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
return reader.ReadToEnd();
您可能的代码
相关聚客文章
相关专栏文章C#语言(115)
new Uri(@&/SilverlightTcomponent/images/1.png&, UriKind.Relative)
其中/SilverlightTcomponent这个是固定的写法,/images/1.png,这个表示images文件夹下的1.png文件
SilverlightTest表示项目的名称
这样就可以通过Uri获取项目images文件夹下的1.png的文件了
还有一种使用统一资源标识符 (URI) 标识和加载文件的方式 Pack URI方法:
pack:/application:,,,/程序集名称;component/资源文件名称。
&详细参考:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:130968次
积分:3109
积分:3109
排名:第7675名
原创:177篇
转载:73篇
评论:14条
(1)(2)(1)(1)(2)(1)(5)(2)(8)(10)(5)(1)(6)(12)(21)(6)(11)(3)(3)(7)(14)(128)

我要回帖

更多关于 urimatcher 用法 的文章

 

随机推荐