2010-01-15 21 views
9

Necesito hacer una llamada a un servicio web json desde C# Asp.net. El servicio devuelve un objeto JSON y los datos JSON que el servicio web quiere tener este aspecto:Llamar al servicio web json externo de asp.net C#

"data" : "my data" 

Esto es lo que he llegado con pero no puedo entender cómo añado los datos de mi solicitud y enviar y luego analizar los datos JSON que obtengo.

string data = "test"; 
Uri address = new Uri("http://localhost/Service.svc/json"); 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address); 
request.Method = "POST"; 
request.ContentType = "application/json; charset=utf-8"; 
string postData = "{\"data\":\"" + data + "\"}"; 

¿Cómo puedo agregar mis datos json a mi solicitud y luego analizar la respuesta?

+0

Posible duplicado: http://stackoverflow.com/questions/8270464/best-way-to-call-a-json-webservice-from-a-net-console/ 8270482 # 8270482 –

Respuesta

16

Utilice JavaScriptSerializer, para deserializar/analizar los datos. Usted puede obtener los datos usando:

// corrected to WebRequest from HttpWebRequest 
WebRequest request = WebRequest.Create("http://localhost/service.svc/json"); 

request.Method="POST"; 
request.ContentType = "application/json; charset=utf-8"; 
string postData = "{\"data\":\"" + data + "\"}"; //encode your data 
               //using the javascript serializer 

//get a reference to the request-stream, and write the postData to it 
using(Stream s = request.GetRequestStream()) 
{ 
    using(StreamWriter sw = new StreamWriter(s)) 
     sw.Write(postData); 
} 

//get response-stream, and use a streamReader to read the content 
using(Stream s = request.GetResponse().GetResponseStream()) 
{ 
    using(StreamReader sr = new StreamReader(s)) 
    { 
     var jsonData = sr.ReadToEnd(); 
     //decode jsonData with javascript serializer 
    } 
} 
Cuestiones relacionadas