2009-01-16 177 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

相关问题