【发布时间】:2019-04-30 19:18:58
【问题描述】:
我希望能够在 REST API 的 POST 函数定义中接收 POST 请求的正文内容。
我有一个客户端代码将 C# 对象转换为 JSON,然后将其包装在 HTTP StringContent 中。然后,此有效负载通过 HTTP Post 请求发送到 URL。但是,当我尝试返回接收到的字符串时,API 中的 Post 方法总是返回 NULL。
客户:
public async void Register_Clicked(object sender, EventArgs e) // When user enters the Register button
{
Sjson = JsonConvert.SerializeObject(signup);
var httpContent = new StringContent(Sjson);
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("https://apiname.azurewebsites.net");
var response = await client.PostAsync("api/values", httpContent);
var responseContent = await response.Content.ReadAsStringAsync();
StatusLabel.Text = responseContent; //To display response in client
}
}
API POST 定义:
[SwaggerOperation("Create")]
[SwaggerResponse(HttpStatusCode.Created)]
public string Post([FromBody]string signup)
{
return signup;
}
我希望客户端输入作为响应显示在客户端 (StatusLabel.Text) 中。 但是我收到的都是 NULL。请指引我正确的方向。
【问题讨论】:
-
你必须得到你的任务的结果。
var responseContent = await response.Content.ReadAsStringAsync().Result; -
@Rahul Sharma 当我添加“.Result”时,它触发了以下错误:“字符串”不包含“GetAwaiter”的定义,并且没有可访问的扩展方法“GetAwaiter”接受类型的第一个参数可以找到“字符串”(您是否缺少 using 指令或程序集引用?)
-
你能告诉我你的客户代码吗?该方法的返回类型是什么?它应该类似于
public async Task<string> -
我已经在上面的问题中展示了相关的客户端代码。对不起,我不明白 'Task
' 指的是什么。你问的是服务器的返回类型吗?