gpt4 book ai didi

c# - PostAsJsonAsync 未按预期运行

转载 作者:太空宇宙 更新时间:2023-11-03 14:48:14 24 4
gpt4 key购买 nike

我正在尝试使用 PostAsJsonAsync 调用 API,但它没有像我预期的那样工作。

repo :

  1. 创建一个 ASP.NET WebAPI 项目(.NET Framework 4.7.2)
  2. ValuesController中的Post方法替换为

    // POST api/values
    public async Task<IHttpActionResult> Post(string[] array)
    {
    var suffix = array == null ? "is null" : $"has {array.Length} elements";
    var message = $"`array` {suffix}";
    return Ok(message);
    }
  3. 创建控制台应用程序以访问 API。

    static async Task Main(string[] args)
    {
    const string url = "http://localhost:6757/api/values";
    var value = new List<string> { "a", "b" };
    var client = new HttpClient();

    var response = await client.PostAsJsonAsync(url, value);
    var message = await response.Content.ReadAsStringAsync();
    Console.WriteLine(message);

    // Do what I think PostAsJsonAsync is essentially doing
    var json = JsonConvert.SerializeObject(value);
    var content = new StringContent(json, Encoding.UTF8, "application/json");
    response = await client.PostAsync(url, content);
    message = await response.Content.ReadAsStringAsync();
    Console.WriteLine(message);
    }
  4. 运行 WebApi,然后运行控制台应用

预期输出:

"array has 2 elements"

"array has 2 elements"

实际输出:

"array is null"

"array has 2 elements"

所以我更改了 Post 方法来比较请求中的内容字符串。

public async Task<IHttpActionResult> Post()
{
var value = await Request.Content.ReadAsStringAsync();
return Ok();
}

他们都将 value 设置为 ["a","b"]

那么为什么 PostAsJsonAsync 没有像我认为的那样工作?

最佳答案

我有一个类似的问题,基本上,PostAsJsonAsync()正在序列化 List<string>作为"a,b" .

我建议使用与您的示例相同的代码:

var json = JsonConvert.SerializeObject(value);
var content = new StringContent(json, Encoding.UTF8, "application/json");
response = await client.PostAsync(url, content);

这被证明是有效的。

关于c# - PostAsJsonAsync 未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53199959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com