Ich erstelle eine Webanforderung in ASP.NET und muss dem Text eine Reihe von Daten hinzufügen. Wie mache ich das?
var request = HttpWebRequest.Create(targetURL);
request.Method = "PUT";
response = (HttpWebResponse)request.GetResponse();
Ich erstelle eine Webanforderung in ASP.NET und muss dem Text eine Reihe von Daten hinzufügen. Wie mache ich das?
var request = HttpWebRequest.Create(targetURL);
request.Method = "PUT";
response = (HttpWebResponse)request.GetResponse();
Antworten:
Mit HttpWebRequest.GetRequestStream
Codebeispiel von http://msdn.microsoft.com/en-us/library/d4cek6cc.aspx
string postData = "firstone=" + inputData;
ASCIIEncoding encoding = new ASCIIEncoding ();
byte[] byte1 = encoding.GetBytes (postData);
// Set the content type of the data being posted.
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
// Set the content length of the string being posted.
myHttpWebRequest.ContentLength = byte1.Length;
Stream newStream = myHttpWebRequest.GetRequestStream ();
newStream.Write (byte1, 0, byte1.Length);
Aus einem meiner eigenen Codes:
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Credentials = this.credentials;
request.Method = method;
request.ContentType = "application/atom+xml;type=entry";
using (Stream requestStream = request.GetRequestStream())
using (var xmlWriter = XmlWriter.Create(requestStream, new XmlWriterSettings() { Indent = true, NewLineHandling = NewLineHandling.Entitize, }))
{
cmisAtomEntry.WriteXml(xmlWriter);
}
try
{
return (HttpWebResponse)request.GetResponse();
}
catch (WebException wex)
{
var httpResponse = wex.Response as HttpWebResponse;
if (httpResponse != null)
{
throw new ApplicationException(string.Format(
"Remote server call {0} {1} resulted in a http error {2} {3}.",
method,
uri,
httpResponse.StatusCode,
httpResponse.StatusDescription), wex);
}
else
{
throw new ApplicationException(string.Format(
"Remote server call {0} {1} resulted in an error.",
method,
uri), wex);
}
}
catch (Exception)
{
throw;
}
Aktualisieren
Siehe meine andere SO-Antwort.
Original
var request = (HttpWebRequest)WebRequest.Create("https://example.com/endpoint");
string stringData = ""; // place body here
var data = Encoding.Default.GetBytes(stringData); // note: choose appropriate encoding
request.Method = "PUT";
request.ContentType = ""; // place MIME type here
request.ContentLength = data.Length;
var newStream = request.GetRequestStream(); // get a ref to the request body so it can be modified
newStream.Write(data, 0, data.Length);
newStream.Close();
Stream
Objekt, newStream
auf das verwiesen wird , direkt auf den Text der Anfrage. Der Zugriff erfolgt über den Anruf an HttpWReq.GetRequestStream()
. Es ist nicht erforderlich, etwas anderes für die Anforderung festzulegen.
Die Antworten in diesem Thema sind alle großartig. Ich möchte jedoch einen anderen vorschlagen. Höchstwahrscheinlich haben Sie eine API erhalten und möchten diese in Ihr c # -Projekt aufnehmen. Mit Postman können Sie den API-Aufruf dort einrichten und testen. Sobald er ordnungsgemäß ausgeführt wird, können Sie einfach auf 'Code' klicken und die Anforderung, an der Sie gearbeitet haben, wird in ac # snippet geschrieben. so was:
var client = new RestClient("https://api.XXXXX.nl/oauth/token");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic N2I1YTM4************************************jI0YzJhNDg=");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("grant_type", "password");
request.AddParameter("username", "development+XXXXXXXX-admin@XXXXXXX.XXXX");
request.AddParameter("password", "XXXXXXXXXXXXX");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Der obige Code hängt vom Nuget-Paket RestSharp ab, das Sie einfach installieren können.