You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HttpClient调用REST API,请求体传用户名密码失败求助

解决HttpClient请求体无法传递用户名密码的问题

你的代码核心错误是创建StringContent时,误用了data.ToString()而非序列化后的jsonData。Dictionary的默认ToString()方法返回的是类型标识字符串(例如System.Collections.Generic.Dictionary2[System.String,System.String]`),并非有效的JSON内容,导致API无法解析请求体。

修正后的代码如下:

var data = new Dictionary<string, string>
{ 
    {"username","username"},
    {"password","password"}
};
var jsonData = JsonConvert.SerializeObject(data);
HttpClient client2 = new HttpClient();
// 替换为序列化后的JSON字符串
var requestContent2 = new StringContent(jsonData, Encoding.UTF8, "application/json");
client2.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", access_token);
HttpResponseMessage response2 = await client2.PostAsync(nitaauthapi, requestContent2);
HttpContent content2 = response2.Content;
string result2 = await content2.ReadAsStringAsync();
JObject jObject2 = JObject.Parse(result2);
string NONCE = jObject2["NONCE"].Value<string>();

额外注意事项:

  • 确认已正确引用Newtonsoft.Json NuGet包(代码中用到了JsonConvert)
  • 如果API要求接收表单格式(application/x-www-form-urlencoded),则需改用FormUrlEncodedContent,而非StringContent
  • 建议复用HttpClient实例,避免每次请求都新建对象,防止Socket资源耗尽

内容的提问来源于stack exchange,提问作者Nelson Kibet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:55:22