2014-07-14 32 views
12

için C# POST json göndermek. Ben API göndermek mümkün değilim, json oluşturmak için Newtonsoft dll dosyaları kullanmış, ama.nasıl mümkün C# ASP.Net web API POST isteği olmak için ne kadar asp.net web API

Benim kodudur:

 Login login = new Login 
     { 
      userid = username.Text, 
      pass = pass.Text 
     }; 
     string json = JsonConvert.SerializeObject(login, Formatting.Indented); 

Nasıl Web API için bu json göndermek ve yanıt almak için?

bir istek oluşturmak için HttpWebRequest sınıfını kullanabilir ve istekle birlikte Json yazmak için StreamWriter kullanmak ve nihayet Web API HttpWebResponse alabilirsiniz

string url = "myurl"; 


     var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); 
     httpWebRequest.ContentType = "application/json; charset=utf-8"; 
     httpWebRequest.Method = "POST"; 
     httpWebRequest.Accept = "application/json; charset=utf-8"; 

     using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
     { 

      json = json.Replace("\r\n",""); 
      //json = json.Replace("\",", "\"," + "\"" +"\u002B"); 
      streamWriter.Write(json); 
      streamWriter.Flush(); 
      streamWriter.Close(); 
     } 

     var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
     using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
     { 
      var result = streamReader.ReadToEnd(); 
      pass.Text = result.ToString(); 
     } 
+0

ı kullanmak [WebClient] (http://stackoverflow.com/questions/11081760/upload-json-via-webclient). StackOverflow'ta bunun nasıl kullanılacağı konusunda birçok örnek var. Bu 'HttpWebRequest' daha az işin içinde – James

cevap

1

Düzen.

var httpWebRequest = (HttpWebRequest)WebRequest.Create("path/api"); 
httpWebRequest.ContentType = "text/json"; 
httpWebRequest.Method = "POST"; 
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
{ 
    streamWriter.Write(json); 
    streamWriter.Flush(); 
} 
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
+0

Zaten bunu yaptı. Ama başarı mesajını yanlış olarak almıyorum. Lütfen düzenlemeye bakın. – Roshan

+0

Eğer yanıt almak durum kodu budur. –

+0

Başarı: false almak için kullanılan mesajdı. Çalıştım. Bir cevap olarak gönderiyorum. – Roshan

10

Birkaç düzenleme yaparak çalıştım. Bunun yerine, doğrudan json nesne seri, ben bir sınıf kullanılan ve buna değerleri atanır ve JavaScriptSerializer kullanarak seri hale getirilmiş. Yardımınız için teşekkürler Shekhar.

 var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); 
     httpWebRequest.ContentType = "application/json; charset=utf-8"; 
     httpWebRequest.Method = "POST"; 
     httpWebRequest.Accept = "application/json; charset=utf-8"; 

     using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
     { 
      string loginjson = new JavaScriptSerializer().Serialize(new 
      { 
       userid = username.Text, 
       password = pass.Text 
      }); 

      streamWriter.Write(loginjson); 
      streamWriter.Flush(); 
      streamWriter.Close(); 

      var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
      using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
      { 
       var result = streamReader.ReadToEnd(); 
       pass.Text = result.ToString(); 
      } 
     }