wake-up-neo.net

Wie man eine HTTP-Get-Anfrage mit Parametern macht

Ist es möglich, Parameter mit einer HTTP-Get-Anforderung zu übergeben? Wenn ja, wie soll ich es dann machen? Ich habe eine HTTP post requst ( link ) gefunden. In diesem Beispiel wird die Zeichenfolge postData an einen Webserver gesendet. Ich möchte dasselbe mit get machen. Google hat dieses Beispiel auf HTTP get here gefunden. Es werden jedoch keine Parameter an den Webserver gesendet.

43
CruelIO

In einer GET-Anforderung übergeben Sie Parameter als Teil der Abfragezeichenfolge.

string url = "http://somesite.com?var=12345";
21
EndangeredMassa

Mein bevorzugter Weg ist dieser. Es übernimmt das Fluchen und Parsen für Sie.

WebClient webClient = new WebClient();
webClient.QueryString.Add("param1", "value1");
webClient.QueryString.Add("param2", "value2");
string result = webClient.DownloadString("http://theurl.com");
115
wisbucky

Zuerst ist WebClient einfacher zu benutzen; GET-Argumente werden in der Abfragezeichenfolge angegeben. Der einzige Trick besteht darin, sich daran zu erinnern, Werte zu entgehen:

        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);
        }
92
Marc Gravell

Das WebRequest-Objekt scheint mir zu viel Arbeit zu sein. Ich bevorzuge die Verwendung des WebClient-Steuerelements. 

Um diese Funktion zu verwenden, müssen Sie nur zwei NameValueCollections erstellen, die Ihre Parameter und Anforderungsheader enthalten. 

Betrachten Sie die folgende Funktion:

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

Fügen Sie Ihre Querystring-Parameter (falls erforderlich) als NameValueCollection hinzu.

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

Fügen Sie (falls erforderlich) Ihre http-Header als NameValueCollection hinzu.

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

Sie können den Wert auch direkt über eine URL übergeben.

Wenn Sie die Methode public static void calling(string name){....} aufrufen möchten

dann sollten Sie usingHttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://localhost:****/Report/calling?name=Priya); webrequest.Method = "GET"; webrequest.ContentType = "application/text"; anrufen.

Stellen Sie einfach sicher, dass Sie ?Object = value in der URL verwenden

0
Priyanka