[英]HTTP PUT Request Body Found Null In Web API Controller
我正在尝试使用到达我的控制器的 HTTP Verb [HttpPut]
发送请求,但我发送的参数是Null
。 已经看到很多堆栈溢出同一个线程并尝试过但无法弄清楚......奇怪!
我已经序列化的类
Content requestContent = new Content();
requestContent.Name = "Name";
requestContent.Value = "Value";
这是我的请求正文
private readonly HttpClient _httpClient;
public GetAzureResponseClient(HttpClient httpClient)
{
_httpClient = httpClient ?? throw new ArgumentNullException(nameof(httpClient));
}
var requestBody = JsonConvert.SerializeObject(requestContent);
var uri = new Uri("http://localhost:64288/api/ConnectUs/TestMethod");
var response = _httpClient.PutAsJsonAsync(uri, new StringContent(requestBody, Encoding.UTF8, "application/json")).Result;
client.DefaultRequestHeaders.Add("Authorization", "Basic" + "YourAuthKey");
var responseFromServer = await response.Content.ReadAsStringAsync();
我的 Web API 控制器
public ActionResult<Content> TestMethod([FromBody]Content param)
使用 PutAsJsonAsync 时,您不需要将对象重新包装为 JSON:
HttpClient client = new HttpClient();
var uri = new Uri("http://localhost:64288/api/ConnectUs/TestMethod");
var response = await client.PutAsJsonAsync(uri, requestContent); // LOOK HERE
client.DefaultRequestHeaders.Add("Authorization", "Basic" + "YourAuthKey");
var responseFromServer = await response.Content.ReadAsStringAsync();
您不需要额外的序列化,并且必须使用“await”调用 Async 方法。
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Basic" + "YourAuthKey");
var uri = new Uri("http://localhost:64288/api/ConnectUs/TestMethod");
var response = await client.PutAsJsonAsync(uri, requestContent);
var responseFromServer = await response.Content.ReadAsStringAsync();
https://docs.microsoft.com/en-us/previous-versions/aspnet/hh944690(v%3Dvs.118)
PutAsJsonAsync 将序列化给定的 T 类型对象,请尝试使用 PutAsync
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.