У меня есть общий метод SendRequest, который отправляет запрос на получение токена OAuth во время выполнения, а затем также использует его для отправки моего запроса на сервер. У меня есть несколько вызовов POST и DELETE, которые принимают тело списка или строку. Но я не знаю, как его установить. Я знаю, как отправить Json и сериализовать его, но у меня возникают проблемы с добавлением тела, когда это просто строка или тип списка.
public HttpWebResponse SendRequest(string postData = "", Authentication.TokenType tokenType = Authentication.TokenType.Valid)
{
var messageBody = postData;
var strResponseValue = string.Empty;
var request = (HttpWebRequest)WebRequest.Create(EndPoint);
if (EndPoint == StringBuilderUtil.GenerateRequestURL("token"))
{
request.ContentType = "application/x-www-form-urlencoded";
request.Host = "identity-authority." +
ConfigurationManager.AppSettings["TestEnvironment"];
Token = ConfigurationManager.AppSettings["GenericSpecialCode"];
}
else
{
request.ContentType = "application/json";
Token = Authentication.ChooseToken(tokenType);
}
if (HttpMethod == HttpVerb.POST)
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
// Add some headers that are common to all calls.
request.KeepAlive = true;
request.Headers.Add("Authorization", AuthType.ToString() + " " + Token);
request.Method = HttpMethod.ToString();
request.Headers.Add("Cache-Control", "no-cache");
var lbPostBuffer = Encoding.Default.GetBytes(messageBody);
request.ContentLength = lbPostBuffer.Length;
if (HttpMethod == HttpVerb.POST)
{
var PostStream = request.GetRequestStream();
PostStream.Write(lbPostBuffer, 0, lbPostBuffer.Length);
PostStream.Close();
}
return request.GetResponse() as HttpWebResponse;
}
[![enter image description here][1]][1]
[1]: https://i.stack.imgur.com/ec6hh.png
1 ответ
как добавить тело, когда это просто строка или тип списка.
Если вы отправляете строку, вам не нужно ничего делать, кроме кодирования и помещения ее в поток.
Тип списка работает так же, как и объект. Вы должны сначала сериализовать его.
В последних двух вещах уже есть логика.
var lbPostBuffer = Encoding.Default.GetBytes(messageBody);
request.ContentLength = lbPostBuffer.Length;
if (HttpMethod == HttpVerb.POST)
{
var PostStream = request.GetRequestStream();
PostStream.Write(lbPostBuffer, 0, lbPostBuffer.Length);
PostStream.Close();
}
Я предполагаю, что сериализация происходит до вызова метода SendRequest
, и если вы используете Newtonsoft.Json, это можно сделать с помощью JsonConvert.SerializeObject
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.