c# - 415(不支持的媒体类型)Angular API 调用
问题描述
我在尝试调用 API GET 调用时收到不支持的媒体类型错误。
这是后端代码:
public async Task<JObject> GetSummonerData(GetSummonerDataDto getMatch)
{
string username = getMatch.Username;
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string url="https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/" +username;
client.DefaultRequestHeaders.Add("X-Riot-Token", _riotToken);
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
JObject json = JObject.Parse(body);
return json;
}
这是角部分:
GetSummonerData(model: any) {
console.log(model);
let headers = new HttpHeaders();
headers = headers.set('Content-Type', 'application/json; charset=utf-8');
return this.http.get(this.baseUrl + 'getsummonerdata', model);
}
现在,当我进行此特定调用时,我立即收到 HTTP 415 错误。但是,我有另一个 GET 函数,这个功能本质上是GetSummonerData
多次调用后端并且正在工作
getSummonerDataMultiple() {
return this.http.get(this.baseUrl + 'getsummonerdatamultiple');
以下是上述 Angular 代码的后端代码:
public async Task<JArray> GetSummonerDataMultiple()
{
string[] players = {"twokdavey", "jimlan", "captainwalrus69", "pynkcoffee"};
JArray SummonersData= new JArray();
foreach(var player in players)
{
var user = await GetSummonerData(new GetSummonerDataDto{Username = player});
if(user != null){
SummonersData.Add(user);
}
}
return SummonersData;
}
请注意,唯一的区别是我没有 DTO(无参数)。GetSummonerDataDto
只是一个简单的类
public string Username {get; set;}
我什至将我的参数硬编码{'username': 'tankthebeast'}
为我的 Angular 部分。我在涉及 DTO 的其他功能上取得了成功,但尽管我回到代码中,但我没有看到任何差异。之前的问题建议Content-Type
按照我的第一个 Angular 部分中的描述添加 HTTP 标头,但错误仍然存在。
我的问题最大的亮点是我的标题application/problem+jso
在浏览器中显示 n,我找不到更多信息。
最后一条信息。Postman显示所有功能。这是一个我无法解决的角度问题。
解决方案
经验法则:使用 HTTP GET 时不要发送Content-Type
HTTP 标头。
Content-Type
HTTP 标头通知服务器有关请求的正文。在 HTTP GET 的情况下,您没有正文!
MDN上的更多信息。
推荐阅读
- c++ - make_index_sequence 是如何工作的?
- angular - Angular 6 迁移 -.angular-cli.json 到 angular.json
- f# - 为什么 dotnet-fantomas 需要 FSharp.Core,Version=4.4.1.0?
- c++ - 插入指针数组删除先前的结果
- javascript - 在注入大部分html期间Angular2中的微调器
- javascript - 在外观不起作用的js中添加onlick事件侦听器
- c# - 为什么 LINQ 不喜欢内联日期计算?
- java - Java 1.8 和 tomcat 6.0.53 原因:java.io.EOFException:SSL 对等体错误关闭
- python - 使用 Django rest framework 3.6.2 和 python 3 连接到 Couchdb
- python - 在使用 **kwargs 时分配 *args