2016-08-31 65 views
3

我有這個HttpWebRequest如何使用HttpWebRequest發佈數據?

var request = HttpWebRequest.Create("http://example.com/api/Phrase/GetJDTO"); 
request.ContentType = "application/json"; 
request.Method = "POST"; 

但我需要一個有效載荷添加到這樣的請求主體:

Jlpt = 2 

別人的幫助,告訴我怎樣可以將數據添加到POST?

+0

如果你可以在任何物體,使用'HttpClient'而不是'HttpWebRequest'。它具有更現代化的異步API,以及向請求添加有效載荷的更直接的方式。 –

回答

6

您可以通過此

var request = HttpWebRequest.Create("http://example.com/api/Phrase/GetJDTO"); 

var postData = "Jlpt = 2"; 
var data = Encoding.ASCII.GetBytes(postData); 

request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.ContentLength = data.Length; 

using (var stream = request.GetRequestStream()) 
{ 
    stream.Write(data, 0, data.Length); 
} 

var response = (HttpWebResponse)request.GetResponse(); 

var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 

做,但我建議你在這種情況下使用HttpClient而不是HttpWebRequest

+0

非常感謝。你能解釋爲什麼你建議使用HttpClient?有什麼不同?謝謝。 – Alan2

+0

你可以在這個SO線程中找到更多細節http://stackoverflow.com/questions/22214930/httpclient-vs-httpwebrequest – Mostafiz

1
if (data != null) 
{ 
    request.ContentType = "application/json"; 
    using (var stream = new StreamWriter(request.GetRequestStream())) 
    { 
     var serialized = JsonConvert.SerializeObject(data); 
     stream.Write(serialized); 
    } 
} 
else 
{ 
    request.ContentLength = 0; 
} 

,其中數據是要發送

相關問題