Общаетесь с Интернетом через приложение на C #?

2

Хотя я могу понять концепции .NET-приложений и приложений Windows, я хочу создать приложение, которое будет включать в себя моделирование кликов на сайте и получение времени отклика на эту страницу. У меня еще не было опыта работы в Интернете, поскольку я только младший, может кто-нибудь объяснить мне (по-английски!!) основные понятия или примеры, разные способы и классы, которые могут помочь мне общаться с веб-сайтом?

Теги:
web-services

2 ответа

7
Лучший ответ

что вы хотите сделать?

отправить запрос и получить ответ в строке, чтобы вы могли обработать?

HttpWebRequest и HttpWebResponse будет работать

если вам нужно подключиться через TCP/IP, FTP или иначе, чем HTTP, вам нужно использовать более общий метод

WebRequest и WebResponse

Все 4 метода, описанные выше, находятся в пространстве имен System.Net

Если вы хотите создать службу на веб-стороне, которую вы можете использовать, то сегодня и в .NET выберите и работайте с WCF (стиль RESTfull).

надеюсь, что это поможет вам найти свой путь:)

в качестве примера с использованием HttpWebRequest и HttpWebResponse, возможно, какой-то код поможет вам лучше понять.

case: отправить ответ на 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-адрес фиктивный, но вы получаете эту идею.:)

  • 0
    Спасибо, это очень помогает. Хотя queryString ... это та часть URL, которая в основном говорит о критериях, которые вы искали, верно? Что если веб-сайт использует закодированные или полностью их скрывает? Будет ли этот метод работать только на домашней странице?
  • 0
    webRequest.ContentType = "application / x-www-form-urlencoded"; затем вы можете добавить заголовки к запросу, например, webRequest.Headers.Add ("myHeaderName", "myHeaderValue"); > Не забудьте добавить заголовки, прежде чем называть длину! так что это дает вам правильную длину запроса.
Показать ещё 1 комментарий
5

Вы можете использовать класс System.Net.WebClient.NET Framework. См. документация MSDN здесь.

Простой пример:

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.

UPDATE:

WebClient проще использовать, чем WebRequest. Обычно вы можете использовать только WebClient, если вам не нужно манипулировать запросами/ответами в расширенном режиме. См. Эту статью, в которой используются оба метода: http://odetocode.com/Articles/162.aspx

  • 0
    В чем преимущество использования WebClient для методов ответа и запроса по сравнению с WebRequest и WebResponse?
  • 0
    Например, такие методы, как DownloadFile и UploadFile, которые упрощают некоторые распространенные задачи.
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню