Вопрос:

Использование HTTP-ответа от веб-сайта в приложении Windows Desktop

c# winforms httpresponse

27 просмотра

2 ответа

10395 Репутация автора

Пожалуйста, укажите мне, что я должен смотреть (библиотеки, классы и т. Д.). У меня есть настольное приложение Windows Froms, и меня попросили написать инструмент для проверки концепции для вызова веб-страницы и получения от нее ответа.

Так скажи я звоню http://www.example.com/getdetails.html?id=7

И я получу детали объекта с id = 7, что бы ни возвращала страница. На какой класс / библиотеку я должен смотреть? Спасибо

PS: пожалуйста, не приводите примеры, относящиеся к API, веб-сервисам SOAP или REST. Я не называю их. Спасибо!

Автор: sarsnake Источник Размещён: 11.06.2019 10:51

Ответы (2)


1 плюс

153 Репутация автора

Решение

Вы можете использовать HttpWebRequest. Вот пример:

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.getdata.com/getdetails.html?id=7");
    request.Method = "GET";

Тогда вы получите ответ, подобный этому:

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
          //Use the response. 
    }

РЕДАКТИРОВАТЬ.

Согласно комментарию Эрика, HttpWebRequest довольно старый (что не обязательно плохо). Я часто его использую, потому что он дает больше контроля, что соответствует моим обычным потребностям, но HttpClient и WebClient более дружелюбны и в большинстве случаев справятся со своей задачей.

Автор: Mariano Luis Villa Размещён: 11.06.2019 10:57

1 плюс

46 Репутация автора

Прежде всего, нужно понять, хотите ли вы позвонить на веб-страницу или веб-сервис, потому что веб-страницы являются HTML-файлами с контентом, а веб-сервисы просто возвращают контент, который является более полезным.

Если вы хотите позвонить на веб-страницу, пожалуйста, используйте

   using (var client = new WebClient())
    {
        var contents = client.DownloadString("http://www.getdata.com/getdetails.html?id=7");
        Console.WriteLine(contents);
    }

Вы можете вызывать внешние сервисы несколькими способами, и есть 2 типа веб-сервисов 1) SOAP 2) REST

Использование сервисов SOAP - это довольно длительный процесс, а сервисы REST легко доступны

Для доступа к REST API вы можете использовать следующий код

    public class Class1
    {
    private const string URL = "https://sub.domain.com/objects.json";

    private string urlParameters = "?api_key=123";

    static void Main(string[] args)
    {
        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri(URL);

        // Add an Accept header for JSON format.
        client.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/json"));

        // List data response.
        HttpResponseMessage response = client.GetAsync(urlParameters).Result;  // Blocking call! Program will wait here until a response is received or a timeout occurs.
        if (response.IsSuccessStatusCode)
        {
            // Parse the response body.
            var dataObjects = response.Content.ReadAsAsync<IEnumerable<DataObject>>().Result;  //Make sure to add a reference to System.Net.Http.Formatting.dll
            foreach (var d in dataObjects)
            {
                Console.WriteLine("{0}", d.Name);
            }
        }
        else
        {
            Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
        }

        //Make any other calls using HttpClient here.

        //Dispose once all HttpClient calls are complete. This is not necessary if the containing object will be disposed of; for example in this case the HttpClient instance will be disposed automatically when the application terminates so the following call is superfluous.
        client.Dispose();
    }
}

и вызвать службу SOAP, добавив ссылку на страницу, которая подробно объясняет, как это длительный процесс

https://www.c-sharpcorner.com/UploadFile/0c1bb2/consuming-web-service-in-Asp-Net-web-application/

Автор: Mohammed AZHAR UDDIN Размещён: 11.06.2019 11:16
Вопросы из категории :
32x32