HTTP PUT请求正文为空

问题描述 投票:0回答:3

我正在尝试使用HTTP Verb [HttpPut]发送请求,该请求已到达我的控制器,但我发送的参数是Null。已经看到很多堆栈溢出相同的线程,并尝试了但无法弄清楚...很奇怪!

我已序列化的类

Content requestContent = new Content();
requestContent.Name = "Name";
requestContent.Value = "Value";

这是我的请求正文

var requestBody = JsonConvert.SerializeObject(requestContent); 
HttpClient client = new HttpClient();
var uri = new Uri("http://localhost:64288/api/ConnectUs/TestMethod");
var response = client.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)
c# asp.net-web-api2
3个回答
1
投票

您不需要额外的序列化,您必须使用'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();


1
投票

使用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();
© www.soinside.com 2019 - 2024. All rights reserved.