На стороне клиента я отправляю запрос с использованием класса HttpClient в основной веб-API ASP. net на стороне сервера.
Я хочу отправить строку ("ОК") в теле запроса и строкового аргумента (numStr = 5) в заголовке, я прочитал много похожих потоков, но все еще не удалось.
Вот метод клиента:
public async void SendBodyAsync(Action<string> onRespond)
{
try
{
string URL = "http://localhost:60039/api/calculator/AddMore";
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, URL);
request.Headers.Add("numStr", "5");
request.Content = new StringContent("OK", Encoding.UTF8, "text/plain"); //causes error
HttpResponseMessage response = await mHttpClient.SendAsync(request);
response.EnsureSuccessStatusCode();
string result = await response.Content.ReadAsStringAsync();
onRespond(result);
}
catch (HttpRequestException ex)
{
Debug.LogError(ex); //Unity3D console Debug
onRespond(null);
}
}
Здесь такое действие сервера:
[Route("api/[controller]/[action]")]
[ApiController]
public class CalculatorController : ControllerBase
{
public string AddMore([FromHeader]string numStr)
{
//string bodyStr;
//get string from Request.Body and set the value to bodyStr
return (int.Parse(numStr) + 10).ToString();
}
}
Если я уберу строку «request.Content = new StringContent (« OK », Encoding.UTF8,« text / plain »);» из метода клиента ответное значение равно "15", что является правильным.
Но с запросом. Содержимое клиента показывает ошибку "Произошла ошибка при отправке запроса ---> Система. Net .WebException: для запроса требуется буферизация данных ". Точка останова сервера не сработала, поэтому запрос не был успешно отправлен.
Я создал еще один очень простой серверный метод, использующий HttpListener, он считывает request.Content как поток clientContext правильно. Я думаю, возможно, проблема в том, что request.Content не равен телу Http, и вряд ли это проблема буферизации, как говорится в сообщении об ошибке.
Мои вопросы: 1. Как правильно отправить строку в теле Http , это не аргумент и может быть длинным (например, полный профиль игрока в строковом формате), поэтому он не подходит для заголовка или запроса или ... 2. Как правильно получить и проанализировать строку в теле запроса на стороне сервера?
Большое спасибо за чтение моего поста.