Я хочу отправить строку (
Код: Выделить всё
"OK"Код: Выделить всё
numStr=5Вот клиентский метод:
Код: Выделить всё
public async void SendBodyAsync(Action 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 клиент покажет ошибку:
При отправке запроса произошла ошибка --->
System.Net.WebException: для успешного выполнения запроса требуется буферизация данных.
Точка останова сервера не срабатывает, поэтому запрос не был отправлен успешно.
Я создал еще один очень простой серверный метод с использованием HttpListener, он правильно считывает запрос.Content как поток clientContext. Я думаю, возможно, проблема в том, что request.Content не равен телу Http, и это вряд ли проблема с буферизацией, как сказано в сообщении об ошибке.
Мои вопросы:
- Как правильно отправить строку в теле Http, она не является аргументом и может быть длинной (как полный профиль игрока в строковом формате), поэтому она не подходит для заголовка или запроса или...
- Как правильно получить и проанализировать строку в теле запроса на стороне сервера?
Подробнее здесь: https://stackoverflow.com/questions/604 ... re-web-api
Мобильная версия