ASP.NET'te bir web isteği oluşturuyorum ve gövdeye bir sürü veri eklemem gerekiyor. Bunu nasıl yaparım?
var request = HttpWebRequest.Create(targetURL);
request.Method = "PUT";
response = (HttpWebResponse)request.GetResponse();
ASP.NET'te bir web isteği oluşturuyorum ve gövdeye bir sürü veri eklemem gerekiyor. Bunu nasıl yaparım?
var request = HttpWebRequest.Create(targetURL);
request.Method = "PUT";
response = (HttpWebResponse)request.GetResponse();
Yanıtlar:
İle HttpWebRequest.GetRequestStream
Http://msdn.microsoft.com/en-us/library/d4cek6cc.aspx'den kod örneği
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);
Kendi kodumdan birinden:
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;
}
Güncelleme
orijinal
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
nesne newStream
. Çağrıyla erişilir HttpWReq.GetRequestStream()
. İstek üzerine başka bir şey ayarlamaya gerek yoktur.
Bu konudaki cevapların hepsi harika. Yine de bir tane daha teklif etmek isterim. Büyük olasılıkla size bir api verildi ve bunu c # projenize dahil etmek istiyorsunuz. Postman'ı kullanarak, api çağrısını orada kurabilir ve test edebilirsiniz ve düzgün çalıştıktan sonra, basitçe 'Kod'a tıklayabilirsiniz ve üzerinde çalıştığınız istek ac # parçacığına yazılır. bunun gibi:
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);
Yukarıdaki kod, kolayca kurabileceğiniz nuget paketi RestSharp'a bağlıdır.