通过C#应用程序与Web通信?

时间:2009-01-16 09:03:38

标签: c# web-services

虽然我可以掌握.Net框架和windows应用程序的概念,但我想创建一个应用程序,让我模拟网站点击并从该页面获取数据/响应时间。我没有任何网络经验,但我只是一个大三学生,有人可以向我解释(英文!!)基本概念或示例,可以帮助我与网站沟通的不同方式和类别吗?

2 个答案:

答案 0 :(得分:7)

你想做什么?

发送请求并在String中获取响应,以便您可以处理?

HttpWebRequestHttpWebResponse将有效

如果您需要通过TCP / IP,FTP或非HTTP连接,那么您需要使用更通用的方法

WebRequestWebResponse

上述所有4种方法都在System.Net命名空间

如果您想在Web端构建可以使用的服务,那么今天和在.NET中请选择并使用WCF (RESTfull style)

希望它可以帮助您找到自己的方式:)

作为使用HttpWebRequest和HttpWebResponse的示例,也许一些代码可以帮助您更好地理解。

案例:发送对网址的回复并获得回复,就像点击网址并获取点击后所有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是虚构的,但你明白了。 :)

答案 1 :(得分: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 ();
    }
}

WebClient还有其他有用的方法,允许开发人员下载并从指定的URI中保存资源。

例如,DownloadFile()方法将资源下载并保存到本地文件。 UploadFile()方法将资源上载并保存到指定的URI。

<强>更新

WebClient比WebRequest更易于使用。通常,您可以坚持使用WebClient,除非您需要以高级方式操作请求/响应。请参阅此文章,其中使用了两者:http://odetocode.com/Articles/162.aspx