代码之家  ›  专栏  ›  技术社区  ›  xoxo

通过C应用程序与网络通信?

  •  2
  • xoxo  · 技术社区  · 17 年前

    虽然我能理解.NET框架和Windows应用程序的概念,但我想创建一个应用程序,它将涉及到我模拟网站点击和从该页面获取数据/响应时间。我还没有网络方面的经验,因为我只是个大三的学生,有人能给我解释一下(用英语说的)。!)基本概念或示例,不同的方法和课程,可以帮助我与网站沟通?

    2 回复  |  直到 17 年前
        1
  •  7
  •   balexandre    17 年前

    你想做什么?

    发送请求并以字符串形式获取响应以便处理?

    HttpWebRequest HttpWebResponse 将工作

    如果需要通过TCP/IP、FTP或HTTP以外的其他方式进行连接,则需要使用更通用的方法

    WebRequest WebResponse

    以上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是虚构的,但是你知道了。:)

        2
  •  5
  •   splattne    17 年前

    你可以用 System.net.WebClient类 .NET框架的。见 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