How to make an HTTP get request with parameters

后端 未结 5 2246
故里飘歌
故里飘歌 2020-12-02 12:59

Is it possible to pass parameters with an HTTP get request? If so, how should I then do it? I have found an HTTP post requst (link). In that exampl

5条回答
  •  被撕碎了的回忆
    2020-12-02 13:27

    The WebRequest object seems like too much work for me. I prefer to use the WebClient control.

    To use this function you just need to create two NameValueCollections holding your parameters and request headers.

    Consider the following function:

        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;
        }
    

    Add your querystring parameters (if required) as a NameValueCollection like so.

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

    Add your http headers (if required) as a NameValueCollection like so.

            NameValueCollection RequestHttpHeaders = new NameValueCollection();
            RequestHttpHeaders.Add("Authorization", "Basic bGF3c2912XBANzg5ITppc2ltCzEF");
    

提交回复
热议问题