Отправить запрос на другой URL из ASP.NET - PullRequest
2 голосов
/ 18 июня 2011

Я хочу создать страницу в ASP.NET, которая будет отправлять запрос на другой URL, не относящийся к ASP.NET, и что-то там проверять, в моем случае это проверить, свободно ли доменное имя или оно уже находится в использовать. (Метод = POST) В результате я хочу получить HTML-код, из которого я извлеку результат, используя RegEx. Последняя часть, я могу сделать сам :)))

Ответы [ 2 ]

3 голосов
/ 18 июня 2011

Вы можете использовать WebClient , чтобы отправить запрос POST и извлечь содержимое удаленного ресурса:

using (var client = new WebClient())
{
    var values = new NameValueCollection
    {
        { "param1", "value 1" },
        { "param2", "value 2" },
    };
    byte[] result = client.UploadValues("http://example.com/foo", values);
    // TODO: process the results
}

, из которого я извлеку результат, используя RegEx,Последнюю часть я могу сделать сам:)

Надеюсь, вам известно общее мнение о разборе HTML с помощью Regex .Поэтому, даже если вы можете сделать это самостоятельно, не делайте этого .Для обработки результатов используйте анализатор HTML, например HTML Agility Pack .

0 голосов
/ 19 июня 2011

Мой окончательный код выглядит следующим образом. Как вы сказали RegEx не сработало, и я использовал простой IndexOf.

        string domain = tb_domain.Text;
        string level = ddl_level.SelectedValue;
        string html = "";

        using (var client = new WebClient())
        {
            var values = new NameValueCollection
            {
                { "whois_search", domain },
                { "domainEnd", level  },
            };


            byte[] res = client.UploadValues("http://registration.ge/index.php?page=11&lang=geo", values);
            for (int i = 0; i < res.Length; i++)
            {
                int a = Convert.ToInt32(res[i]);
                char c = Convert.ToChar(a);
                html += Convert.ToString(c);
            }

            int ind = html.IndexOf("Registrant");

            if (ind == -1)
            {
                lbl_result.Text = "The domain is free, you can register it";
                lbl_result.ForeColor = System.Drawing.Color.Green;
            }
            else
            {
                lbl_result.Text = "The Domain is used";
                lbl_result.ForeColor = System.Drawing.Color.Red;
            }
        }
...