ejemplos c# webclient http-get

c# - ejemplos - Cómo utilizar el método GET con la solicitud de WebClient



webclient get c# (3)

¿Cómo puedo cambiar el método de una solicitud de WebClient? Parece que solo permite POST por defecto. Incluso en el caso de DownloadString.

try { WebClient client = new WebClient(); client.QueryString.Add("apiKey", TRANSCODE_KEY); client.QueryString.Add("taskId", taskId); string response = client.DownloadString(TRANSCODE_URI + "task"); result = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(response); } catch (Exception ex ) { result = null; error = ex.Message + " " + ex.InnerException; }

Y la prueba de Fiddler dice:

POST http://someservice?apikey=20130701-234126753-X7384&taskId=20130701-234126753-258877330210884 HTTP/1.1 Content-Length: 0


Como se puede ver en el código fuente de .NET, el método HTTP de DownloadString depende del estado del campo de instancia de cliente web privado m_Method, que se borra en nulo en cada nueva llamada de método de solicitud ( link ) y se configura por defecto en la solicitud web. Creador (depende de la URI, por ejemplo, el protocolo ftp obtiene otro creador), pero esto no es seguro para subprocesos.

¿Quizás estás compartiendo esta instancia de WebClient entre varias llamadas simultáneamente?

Así se confunde. O esto o el URI confunde al creador de WebRequest.



Si utiliza HttpWebRequest en su lugar, obtendría un mayor control de la llamada. Puede cambiar el verbo REST por la propiedad Método (el valor predeterminado es GET)

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(HostURI); request.Method = "GET"; String test = String.Empty; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); test = reader.ReadToEnd(); reader.Close(); dataStream.Close(); } DeserializeObject(test ...)