使用带Bearer Token的RestClient时遇StatusCode: UnsupportedMediaType问题
解决RestClient带Bearer Token请求时的UnsupportedMediaType错误
嘿,我碰到过类似的问题,咱们一步步来排查修复:
首先,你遇到的StatusCode: UnsupportedMediaType通常是因为API服务器没识别到请求的媒体类型——虽然你手动加了Content-Type头,但RestClient的AddParameter方法在处理RequestBody时可能和手动设置的头产生冲突,或者没正确传递格式信息。
方案1:使用RestClient内置的AddJsonBody方法(推荐)
RestClient有专门处理JSON请求体的方法,它会自动帮你设置正确的Content-Type头,不用手动添加,完美避免冲突:
var client = new RestClient(requestAPIURL); var request = new RestRequest(Method.POST); // 不用手动加Content-Type,AddJsonBody会自动处理 request.AddHeader("Authorization", $"Bearer {token.AccessToken}"); // 直接传入对象,RestClient会自动序列化并设置正确的请求头 request.AddJsonBody(jsonData); var response = client.Execute(request);
方案2:调整AddParameter的使用方式
如果你还是想用AddParameter,可以试试去掉手动添加的Content-Type头——因为当你指定application/json类型的RequestBody时,AddParameter应该会自动设置这个头,重复添加反而可能导致问题:
var client = new RestClient(requestAPIURL); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", $"Bearer {token.AccessToken}"); // 移除手动的Content-Type,让AddParameter自动处理 request.AddParameter("application/json", JsonConvert.SerializeObject(jsonData), ParameterType.RequestBody); var response = client.Execute(request);
方案3:检查RestClient版本
如果你用的是比较旧的RestSharp版本,AddParameter处理RequestBody的逻辑可能存在bug,建议升级到最新稳定版后再尝试上面的方案。
额外排查点
- 确认
jsonData序列化后的JSON格式完全正确,没有语法错误 - 可以先用Fiddler或Postman模拟请求,验证API本身是否支持
application/json格式,排除服务器端的问题
内容的提问来源于stack exchange,提问作者SASIDHAR.C
相关产品推荐
相关产品推荐

