How to make an HTTP get request with parameters

后端 未结 5 2133
故里飘歌
故里飘歌 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:26

    You can also pass value directly via URL.

    If you want to call method public static void calling(string name){....}

    then you should call usingHttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://localhost:****/Report/calling?name=Priya); webrequest.Method = "GET"; webrequest.ContentType = "application/text";

    Just make sure you are using ?Object = value in URL

    0 讨论(0)
  • 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");
    
    0 讨论(0)
  • 2020-12-02 13:35

    First WebClient is easier to use; GET arguments are specified on the query-string - the only trick is to remember to escape any values:

            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);
            }
    
    0 讨论(0)
  • 2020-12-02 13:41

    In a GET request, you pass parameters as part of the query string.

    string url = "http://somesite.com?var=12345";
    
    0 讨论(0)
  • 2020-12-02 13:41

    My preferred way is this. It handles the escaping and parsing for you.

    WebClient webClient = new WebClient();
    webClient.QueryString.Add("param1", "value1");
    webClient.QueryString.Add("param2", "value2");
    string result = webClient.DownloadString("http://theurl.com");
    
    0 讨论(0)
提交回复
热议问题