❶ 誰知道C#使用HttpWebRequest的POST方法發送大量數據的方法
不想一點一點寫了,粘貼給你吧
使用 HttpWebRequest 向網站提交數據
HttpWebRequest 是 .net 基類庫中的一個類,在命名空間 System.Net 下面,用來使用戶通過 HTTP 協議和伺服器交互。
HttpWebRequest 對 HTTP 協議進行了完整的封裝,對 HTTP 協議中的 Header, Content, Cookie 都做了屬性和方法的支持,很容易就能編寫出一個模擬瀏覽器自動登錄的程序。
程序使用 HTTP 協議和伺服器交互主要是進行數據的提交,通常數據的提交是通過 GET 和 POST 兩種方式來完成,下面對這兩種方式進行一下說明:
1. GET 方式。 GET 方式通過在網路地址附加參數來完成數據的提交,比如在地址 中,前面部分 表示數據提交的網址,後面部分 hl=zh-CN 表示附加的參數,其中 hl 表示一個鍵(key), zh-CN 表示這個鍵對應的值(value)。程序代碼如下:
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "" );
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在這里對接收到的頁面內容進行處理
}
2. 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( "" );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = bs.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
//在這里對接收到的頁面內容進行處理
}
在上面的代碼中,我們訪問了 的網址,分別以 GET 和 POST 方式提交了數據,並接收了返回的頁面內容。然而,如果提交的參數中含有中文,那麼這樣的處理是不夠的,需要對其進行編碼,讓對方網站能夠識別。
3. 使用 GET 方式提交中文數據。 GET 方式通過在網路地址中附加參數來完成數據提交,對於中文的編碼,常用的有 gb2312 和 utf8 兩種,用 gb2312 方式編碼訪問的程序代碼如下:
Encoding myEncoding = Encoding.GetEncoding("gb2312");
string address = "" + HttpUtility.UrlEncode("參數一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address);
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在這里對接收到的頁面內容進行處理
}
在上面的程序代碼中,我們以 GET 方式訪問了網址 ,傳遞了參數「參數一=值一」,由於無法告知對方提交數據的編碼類型,所以編碼方式要以對方的網站為標准。常見的網站中, (網路)的編碼方式是 gb2312, (谷歌)的編碼方式是 utf8。
4. 使用 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( "" );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded;charset=gb2312";
req.ContentLength = postBytes.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
//在這里對接收到的頁面內容進行處理
}
從上面的代碼可以看出, POST 中文數據的時候,先使用 UrlEncode 方法將中文字元轉換為編碼後的 ASCII 碼,然後提交到伺服器,提交的時候可以說明編碼的方式,用來使對方伺服器能夠正確的解析。
以上列出了客戶端程序使用 HTTP 協議與伺服器交互的情況,常用的是 GET 和 POST 方式。現在流行的 WebService 也是通過 HTTP 協議來交互的,使用的是 POST 方法。與以上稍有所不同的是, WebService 提交的數據內容和接收到的數據內容都是使用了 XML 方式編碼。所以, HttpWebRequest 也可以使用在調用 WebService 的情況下。
❷ FtpWebRequest 多個文件同時上傳。求C#代碼,舉個栗子就好。
#
usingSystem;
usingSystem.IO;
usingSystem.Net;
namespaceFtp
{
classProgram
{
staticvoidMain(string[]args)
{
DirectoryInfodir=newDirectoryInfo("upload");//上傳文件所在的目錄
FileInfo[]fileInfos=dir.GetFiles();
foreach(FileInfoiteminfileInfos)//遍歷目錄下的所有文件
{
UploadFile(item);//開始上傳
}
Console.WriteLine("done!");
}
privatestaticvoidUploadFile(FileInfofi)
{
FileStreamfs=fi.OpenRead();
longlength=fs.Length;
FtpWebRequestreq=(FtpWebRequest)WebRequest.Create(newUri("ftp://192.168.56.1/"+fi.Name));
req.Credentials=newNetworkCredential("name","password");
req.Method=WebRequestMethods.Ftp.UploadFile;
req.UseBinary=true;
req.ContentLength=length;
req.Timeout=10*1000;
try
{
Streamstream=req.GetRequestStream();
intBufferLength=2048;
byte[]b=newbyte[BufferLength];
inti;
while((i=fs.Read(b,0,BufferLength))>0)
{
stream.Write(b,0,i);
}
stream.Close();
stream.Dispose();
}
catch(Exceptionex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
❸ 如何用httpRequest,WebRequest等類獲取網頁文件信息並且下載文件呢
首先 得購買空間:服務商會給你一個FTP地址和用戶名 密碼
其次:找一個FTP軟體 flashfxp 輸入服內務商提供的FTP地址容 用戶名 密碼登陸 上傳
或直接打開瀏覽器 輸入FTP地址 輸入用戶名 密碼 把做好的網頁 復制 粘貼上去主OK了
❹ httpWebRequest.GetResponse() 基礎連接已關閉 發送時發生錯誤
這個不是超時問題,在XP下只要超過125M以上一提交接就報錯,WIN7下只要伺服器支持超時時間范圍內,就算1G的文件傳一天也不會超時,因為.NET框架底層的WebRequest是用IE的wininet.dll來進行網路請求的,所以跟不同系統環境下的IE內核有關,要解決此問題只有一個辦法,就是自己用SOCKET來進行HTTP請求
❺ HttpRequest 和HttpWebRequest的區別
System.Web.HttpRequest是封裝瀏覽器對伺服器的請求的,主要用在ASP.NET中,其中包括瀏覽器請求的網址,查詢字元串數據或表單數據等等
而System.Net.HttpWebRequest則是用來簡化網路請求的過程,從伺服器上獲取文件/結果的,譬如你可以在代碼中用這個類冒充瀏覽器(設置一個UserAgent)來發請求,處理回應
第一:他們不是父子關系。
第二:Syste.Net.HttpWebRequest 類是System.Net.WebRequest抽象類的一個子類,它是
.NET Framework 的用於訪問 Internet
數據的請求/響應模型的抽象基類。使用該請求/響應模型的應用程序可以用協議不可知的方式從 Internet
請求數據。在這種方式下,應用程序處理 WebRequest 類的實例,而協議特定的子類則執行請求的具體細節。
System.Net.HttpWebRequest 類和System.Net.FileWebRequest都繼承了WebRequest
1、FileWebRequest 類為使用 file:// 方案來請求本地文件的 URI 實現 WebRequest 抽象基類。
2、HttpWebRequest 類對 WebRequest 中定義的屬性和方法提供支持,也對使用戶能夠直接與使用 HTTP 的伺服器交互的附加屬性和方法提供支持。
第三:System.Web.HttpRequest 類使 ASP.NET 能夠讀取客戶端在 Web
請求期間發送的 HTTP 值。HttpRequest 類的方法和屬性通過
HttpApplication、HttpContext、Page 和 UserControl 類的 Request
屬性公開。
所以使用System.Web.HttpRequest類的時候其實都是利用HttpApplication、HttpContext、Page
和 UserControl 類的 Request
屬性。而使用System.Net.HttpWebRequest類時是為了獲得一個Uri資源。自己創建。
System.Web 命名空間提供使得可以進行瀏覽器與伺服器通信的類和介面。此命名空間包括 HttpRequest 類(用於提供有關當前
HTTP 請求的廣泛信息)、HttpResponse 類(用於管理對客戶端的 HTTP 輸出)以及 HttpServerUtility
類(用於提供對伺服器端實用工具與進程的訪問)。System.Web 還包括用於 Cookie 操作、文件傳輸、異常信息和輸出緩存控制的類。
System.Net 命名空間為當前網路上使用的多種協議提供了簡單的編程介面。WebRequest 和 WebResponse
類形成了所謂的可插接式協議的基礎,可插接式協議是網路服務的一種實現,它使您能夠開發出使用 Internet
資源的應用程序,而不必考慮各種不同協議的具體細節。
❻ Loadrunner12如何通過web_custom_request函數向伺服器發送文件(圖片或音頻文件)
BodyFilePath=E:\Loadrunner\0001.jpg
改為:BodyFilePath=E://Loadrunner/0001.jpg
試試呢