2016-08-31 7 views
3

Ich habe diese HttpWebRequest:Wie kann ich Daten mit HttpWebRequest hochladen?

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

Aber ich brauche eine Nutzlast auf den Körper des Antrags wie folgt hinzuzufügen:

Jlpt = 2 

kann jemand helfen und mir sagen, wie ich Daten auf das hinzufügen POST?

+0

senden möchten Wenn Sie können , verwende 'HttpClient' und nicht' HttpWebRequest'. Es hat eine modernere, asynchrone API und eine viel einfachere Möglichkeit, einer Anfrage eine Payload hinzuzufügen. –

Antwort

6

Sie können dies tun, indem

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(); 

aber ich schlage vor, Sie HttpClient verwenden, anstatt HttpWebRequest in diesem Fall

+0

Vielen Dank. Können Sie erklären, warum Sie vorschlagen, HttpClient zu verwenden? Was ist der Unterschied? Vielen Dank. – Alan2

+0

finden Sie weitere Details in diesem SO-Thread 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; 
} 

wo Daten ist jedes Objekt, das Sie

Verwandte Themen