por example enviar c# webclient

c# - enviar - webclient json example



POSTING JSON a URL a través de WebClient en C# (3)

El siguiente ejemplo muestra cómo POSTAR un JSON mediante el método WebClient.UploadString :

var vm = new { k = "1", a = "2", c = "3", v= "4" }; using (var client = new WebClient()) { var dataString = JsonConvert.SerializeObject(vm); client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); client.UploadString(new Uri("http://www.contoso.com/1.0/service/action"), "POST", dataString); }

Requisitos previos: biblioteca Json.NET

Tengo un código JavaScript que necesito convertir a C #. Mi código JavaScript PUBLICA algunos JSON a un servicio web que se ha creado. Este código JavaScript funciona bien y se ve así:

var vm = { k: "1", a: "2", c: "3", v: "4" }; $.ajax({ url: "http://www.mysite.com/1.0/service/action", type: "POST", data: JSON.stringify(vm), contentType: "application/json;charset=utf-8", success: action_Succeeded, error: action_Failed }); function action_Succeeded(r) { console.log(r); } function log_Failed(r1, r2, r3) { alert("fail"); }

Estoy intentando descubrir cómo convertir esto a C #. Mi aplicación está usando .NET 2.0. Por lo que puedo decir, necesito hacer algo como lo siguiente:

using (WebClient client = new WebClient()) { string json = "?"; client.UploadString("http://www.mysite.com/1.0/service/action", json); }

Estoy un poco estancado en este punto. No estoy seguro de cómo debería ser json . No estoy seguro si necesito establecer el tipo de contenido. Si lo hago, no estoy seguro de cómo hacer eso. También vi UploadData . Entonces, no estoy seguro si estoy usando el método correcto. En cierto sentido, la serialización de mis datos es mi problema.

¿Puede alguien decirme qué me falta aquí?

¡Gracias!


La pregunta ya está respondida, pero creo que he encontrado la solución que es más simple y más relevante para el título de la pregunta, aquí está:

var cli = new WebClient(); cli.Headers[HttpRequestHeader.ContentType] = "application/json"; string response = cli.UploadString("http://some/address", "{some:/"json data/"}");


Necesitas un serializador json para analizar tu contenido, probablemente ya lo tienes, para tu pregunta inicial sobre cómo hacer una solicitud, esta podría ser una idea:

var baseAddress = "http://www.mysite.com/1.0/service/action"; var http = (HttpWebRequest)WebRequest.Create(new Uri(baseAddress)); http.Accept = "application/json"; http.ContentType = "application/json"; http.Method = "POST"; string parsedContent = <<PUT HERE YOUR JSON PARSED CONTENT>>; ASCIIEncoding encoding = new ASCIIEncoding(); Byte[] bytes = encoding.GetBytes(parsedContent); Stream newStream = http.GetRequestStream(); newStream.Write(bytes, 0, bytes.Length); newStream.Close(); var response = http.GetResponse(); var stream = response.GetResponseStream(); var sr = new StreamReader(stream); var content = sr.ReadToEnd();

Espero eso ayude,