C# Can';t将字符串转换为system.Net.HttpContent

C# Can';t将字符串转换为system.Net.HttpContent,c#,json,asp.net-web-api,dotnet-httpclient,C#,Json,Asp.net Web Api,Dotnet Httpclient,在这里,我试图从服务中获取数据: public async Task<IHttpActionResult> ValidateSesion() { var values = new Dictionary<string, string>{ { "productId", "1" }, { "productKey", "Abc6666" }, { "userName", "OPPO" }, }; var js

在这里,我试图从服务中获取数据:

public async Task<IHttpActionResult> 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);
}

更改您的返回声明,如

return Content(responseString);

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

这应该可以做到:

public async Task<IHttpActionResult> ValidateSesion()
{
    var values = new Dictionary<string, string>{
      { "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);
}
public异步任务ValidateSesion()
{
var值=新字典{
{“productId”,“1”},
{“productKey”,“Abc6666”},
{“用户名”,“OPPO”},
};
var json=JsonConvert.serialized对象(值、格式、缩进);
var stringContent=新的stringContent(json);
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
var response=wait client.PostAsync(“http://172.116.12.172:8014/iadmin/validate",内容),;
var responseString=await response.Content.ReadAsStringAsync();
返回Ok(responseString);
}

您能否提供错误的完整跟踪信息?这可以帮助我们确定错误发生的确切位置…PostAsync方法都不接受字符串。尝试传递字符串会引发编译错误。
public async Task<IHttpActionResult> ValidateSesion()
{
    var values = new Dictionary<string, string>{
      { "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);
}