Как сделать HTTP-запрос на получение с параметрами - PullRequest
45 голосов
/ 05 февраля 2009

Можно ли передать параметры с помощью запроса HTTP get? Если так, то как мне тогда это сделать? Я нашел HTTP сообщение ( ссылка ). В этом примере строка postData отправляется на веб-сервер. Я хотел бы сделать то же самое, используя get . Google нашел этот пример на HTTP get здесь . Однако никакие параметры не отправляются на веб-сервер.

Ответы [ 5 ]

123 голосов
/ 20 июня 2013

Мой любимый способ это. Он обрабатывает побег и разбор для вас.

WebClient webClient = new WebClient();
webClient.QueryString.Add("param1", "value1");
webClient.QueryString.Add("param2", "value2");
string result = webClient.DownloadString("http://theurl.com");
92 голосов
/ 05 февраля 2009

Первый WebClient проще в использовании; GET-аргументы указываются в строке запроса - единственная хитрость заключается в том, чтобы не использовать любые значения:

        string address = string.Format(
            "http://foobar/somepage?arg1={0}&arg2={1}",
            Uri.EscapeDataString("escape me"),
            Uri.EscapeDataString("& me !!"));
        string text;
        using (WebClient client = new WebClient())
        {
            text = client.DownloadString(address);
        }
23 голосов
/ 05 февраля 2009

В GET-запросе вы передаете параметры как часть строки запроса.

string url = "http://somesite.com?var=12345";
7 голосов
/ 09 июля 2014

Объект WebRequest кажется мне слишком большой работой. Я предпочитаю использовать элемент управления WebClient.

Чтобы использовать эту функцию, вам просто нужно создать две NameValueCollections, содержащие ваши параметры и запросить заголовки.

Рассмотрим следующую функцию:

    private static string DoGET(string URL,NameValueCollection QueryStringParameters = null, NameValueCollection RequestHeaders = null)
    {
        string ResponseText = null;
        using (WebClient client = new WebClient())
        {
            try
            {
                if (RequestHeaders != null)
                {
                    if (RequestHeaders.Count > 0)
                    {
                        foreach (string header in RequestHeaders.AllKeys)
                            client.Headers.Add(header, RequestHeaders[header]);
                    }
                }
                if (QueryStringParameters != null)
                {
                    if (QueryStringParameters.Count > 0)
                    {
                        foreach (string parm in QueryStringParameters.AllKeys)
                            client.QueryString.Add(parm, QueryStringParameters[parm]);
                    }
                }
                byte[] ResponseBytes = client.DownloadData(URL);
                ResponseText = Encoding.UTF8.GetString(ResponseBytes);
            }
            catch (WebException exception)
            {
                if (exception.Response != null)
                {
                    var responseStream = exception.Response.GetResponseStream();

                    if (responseStream != null)
                    {
                        using (var reader = new StreamReader(responseStream))
                        {
                            Response.Write(reader.ReadToEnd());
                        }
                    }
                }
            }
        }
        return ResponseText;
    }

Добавьте параметры строки запроса (если требуется) в качестве NameValueCollection, как показано ниже.

        NameValueCollection QueryStringParameters = new NameValueCollection();
        QueryStringParameters.Add("id", "123");
        QueryStringParameters.Add("category", "A");

Добавьте ваши http-заголовки (если требуется) в качестве NameValueCollection следующим образом.

        NameValueCollection RequestHttpHeaders = new NameValueCollection();
        RequestHttpHeaders.Add("Authorization", "Basic bGF3c2912XBANzg5ITppc2ltCzEF");
0 голосов
/ 19 апреля 2017

Вы также можете передать значение напрямую через URL.

Если вы хотите вызвать метод public static void calling(string name){....}

тогда вы должны позвонить, используя HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://localhost:****/Report/calling?name=Priya); webrequest.Method = "GET"; webrequest.ContentType = "application/text";

Просто убедитесь, что вы используете ?Object = value в URL

...