Tôi đang tạo một yêu cầu web trong ASP.NET và tôi cần thêm một loạt dữ liệu vào phần nội dung. Làm thế nào để làm điều đó?
var request = HttpWebRequest.Create(targetURL);
request.Method = "PUT";
response = (HttpWebResponse)request.GetResponse();
Tôi đang tạo một yêu cầu web trong ASP.NET và tôi cần thêm một loạt dữ liệu vào phần nội dung. Làm thế nào để làm điều đó?
var request = HttpWebRequest.Create(targetURL);
request.Method = "PUT";
response = (HttpWebResponse)request.GetResponse();
Câu trả lời:
Với HttpWebRequest.GetRequestStream
Ví dụ về mã từ 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);
Từ một trong những mã của riêng tôi:
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;
}
Cập nhật
Xem câu trả lời SO khác của tôi.
Nguyên
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
đối tượng newStream
trỏ đến ghi trực tiếp vào phần nội dung của yêu cầu. Nó được truy cập bằng cuộc gọi tới HttpWReq.GetRequestStream()
. Không cần đặt bất cứ thứ gì khác theo yêu cầu.
Các câu trả lời trong chủ đề này đều tuyệt vời. Tuy nhiên tôi muốn đề xuất một cái khác. Nhiều khả năng bạn đã được cấp một api và muốn nó vào dự án c # của bạn. Sử dụng Postman, bạn có thể thiết lập và kiểm tra lệnh gọi api ở đó và khi nó chạy đúng cách, bạn chỉ cần nhấp vào 'Mã' và yêu cầu mà bạn đang thực hiện, được ghi vào ac # snippet. như thế này:
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);
Đoạn mã trên phụ thuộc vào gói nuget RestSharp mà bạn có thể dễ dàng cài đặt.