无法将字符串转换为system.Net.HttpContent。

12 浏览
0 Comments

无法将字符串转换为system.Net.HttpContent。

这个问题已经在这里有答案:

使用HttpClient从Web API发布JsonObject

在ASP.NET Core中使用HttpClient PostAsJsonAsync发送HTTP POST消息

我在尝试从服务获取数据:

public async Task ValidateSesion()
{
    var values = new Dictionary<string, string>{
        { "productId", "1" },
        { "productKey", "Abc6666" },
        { "userName", "OPPO" },
    };
    var json = JsonConvert.SerializeObject(values, Formatting.Indented);
    // var content = new FormUrlEncodedContent(json);
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    var response = await client.PostAsync("http://172.116.12.172:8014/iadmin/validate", json);
    var responseString = await response.Content.ReadAsStringAsync();
    return Ok(responseString);
}

如果我进行任何PostMan调用,就像以下一样,我得到的数据看起来像这样:

{
    "productId": "1",
    "productKey": "Abc6666" 
}

admin 更改状态以发布 2023年5月21日
0
0 Comments

将你的返回语句修改为:

return Content(responseString);

0
0 Comments

你不能发布原始字符串,必须将其包装在StringContent中:new StringContent(json);

这应该能解决问题:

public async Task ValidateSesion()
{
    var values = new Dictionary{
      { "productId", "1" },
      { "productKey", "Abc6666" },
      { "userName", "OPPO" },
    };
    var json = JsonConvert.SerializeObject(values, Formatting.Indented);
    var stringContent = new StringContent(json);
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    var response = await client.PostAsync("http://172.116.12.172:8014/iadmin/validate", stringContent);
    var responseString = await response.Content.ReadAsStringAsync();
    return Ok(responseString);
}

0