servicio por pasar parametros consuming consume con c# httpwebrequest get

por - rest api c#



Cómo hacer una solicitud HTTP get con parámetros (5)

First WebClient es más fácil de usar; Los argumentos GET se especifican en la cadena de consulta; el único truco es recordar escapar de cualquier valor:

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

¿Es posible pasar parámetros con una solicitud de obtención de HTTP ? Si es así, ¿cómo debería hacerlo? He encontrado un HTTP post requst ( enlace ). En ese ejemplo, la cadena postData se envía a un servidor web. Me gustaría hacer lo mismo usando get en su lugar. Google encontró este ejemplo en HTTP aquí . Sin embargo, no se envían parámetros al servidor web.


En una solicitud GET, pasa parámetros como parte de la cadena de consulta.

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


Mi forma preferida es esta. Maneja el escaneo y el análisis para ti.

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


El objeto WebRequest parece demasiado trabajo para mí. Prefiero usar el control WebClient.

Para usar esta función, solo necesita crear dos NameValueCollections que contengan sus parámetros y solicitar encabezados.

Considere la siguiente función:

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

Agregue sus parámetros de cadena de consulta (si es necesario) como NameValueCollection como tal.

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

Agregue sus encabezados http (si es necesario) como NameValueCollection como tal.

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


También puede pasar el valor directamente a través de la URL.

Si desea llamar al método public static void calling(string name){....}

entonces debe llamar utilizando HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://localhost:****/Report/calling?name=Priya); webrequest.Method = "GET"; webrequest.ContentType = "application/text";

Solo asegúrate de estar usando ?Object = value en URL