2009-01-16 180 views
2

雖然我可以理解.Net框架和Windows應用程序的概念,但我想創建一個應用程序,它將涉及我模擬網站點擊並從該頁面獲取數據/響應時間。我還沒有任何網絡方面的經驗,但我只是一個初中生,有人能向我解釋基本概念或示例,可以幫助我與網站溝通的不同方式和類別?通過C#應用程序與Web進行通信?

回答

7

你想要做什麼?

發送請求並獲取字符串中的響應,以便處理?

HttpWebRequestHttpWebResponse將工作

如果需要通過比HTTP,那麼你需要使用一個更通用的方法

WebRequestWebResponse

所有TCP/IP,FTP或其他連接上面的4個方法在System.Net命名空間中

如果您想在Web端構建一個可以使用的服務,那麼在今天和.NET中請選擇並使用WCF (RESTfull style)

希望它可以幫助您使用HttpWebRequest和HttpWebResponse找到你的方式:)

爲例,也許某些代碼將幫助您更好地瞭解。

情況:發送到一個URL的響應,並得到響應,這就像點擊的URL和抓住所有的HTML代碼,點擊後會出現:

private void btnSendRequest_Click(object sender, EventArgs e) 
{ 
    textBox1.Text = ""; 
    try 
    { 
     String queryString = "user=myUser&pwd=myPassword&tel=+123456798&msg=My message"; 
     byte[] requestByte = Encoding.Default.GetBytes(queryString); 

     // build our request 
     WebRequest webRequest = WebRequest.Create("http://www.sendFreeSMS.com/"); 
     webRequest.Method = "POST"; 
     webRequest.ContentType = "application/xml"; 
     webRequest.ContentLength = requestByte.Length; 

     // create our stram to send 
     Stream webDataStream = webRequest.GetRequestStream(); 
     webDataStream.Write(requestByte, 0, requestByte.Length); 

     // get the response from our stream 
     WebResponse webResponse = webRequest.GetResponse(); 
     webDataStream = webResponse.GetResponseStream(); 

     // convert the result into a String 
     StreamReader webResponseSReader = new StreamReader(webDataStream); 
     String responseFromServer = webResponseSReader.ReadToEnd().Replace("\n", "").Replace("\t", ""); 

     // close everything 
     webResponseSReader.Close(); 
     webResponse.Close(); 
     webDataStream.Close(); 

     // You now have the HTML in the responseFromServer variable, use it :) 
     textBox1.Text = responseFromServer; 
    } 
    catch (Exception ex) 
    { 
     textBox1.Text = ex.Message; 
    } 
} 

代碼不工作導致URL是虛構的,但你明白了。 :)

5

您可以使用.NET Framework的System.Net.WebClient類。請參閱MSDN documentation here

簡單的例子:

using System; 
using System.Net; 
using System.IO; 

public class Test 
{ 
    public static void Main (string[] args) 
    { 
     if (args == null || args.Length == 0) 
     { 
      throw new ApplicationException ("Specify the URI of the resource to retrieve."); 
     } 

     WebClient client = new WebClient(); 

     // Add a user agent header in case the 
     // requested URI contains a query. 

     client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 

     Stream data = client.OpenRead (args[0]); 
     StreamReader reader = new StreamReader (data); 
     string s = reader.ReadToEnd(); 
     Console.WriteLine (s); 
     data.Close(); 
     reader.Close(); 
    } 
} 

有Web客戶端的其他有用的方法,它允許開發者下載,並從指定的URI節省資源。

例如,DownloadFile()方法將下載資源並保存到本地文件。 UploadFile()方法將資源上載並保存到指定的URI。

UPDATE:

WebClient的是比簡單的WebRequest使用。通常情況下,您可以堅持使用WebClient,除非您需要以高級方式處理請求/響應。看到這篇文章,其中都使用:http://odetocode.com/Articles/162.aspx

+0

將WebClient用於響應和請求方法與WebRequest和WebResponse的優點是什麼? – balexandre 2009-01-16 09:39:44

+0

例如DownloadFile和UploadFile等簡化一些常見任務的方法。 – splattne 2009-01-16 09:42:20

相關問題