blazor - 使用 HttpClient 和 x-www-form-urlencoded 的服务器端 Blazor Post
问题描述
我可以使用 Postman 将内容类型为 x-www-form-urlencoded 的请求成功发布到 REST API。
但是,当我尝试在 Blazor 服务器端应用程序中发布相同的帖子时,我收到 401 错误。
我的代码的相关部分如下:
FormUrlEncodedContent content = new(new Dictionary<string, string>()
{
["qualification_id"] = qualification.QualificationId,
["period_id"] = qualification.PeriodId,
["taken_date"] = qualification.CompletedDateString,
["expiration_date"] = qualification.ExpirationDateString,
});
content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
var request = new HttpRequestMessage(HttpMethod.Post, requestUri);
request.Headers.Add("x-api-key", xApiKey);
var client = _clientFactory.CreateClient();
var response = await client.PostAsync(requestUri, content);
var ret = await response.Content.ReadFromJsonAsync<MemberQualification>();
return ret;
任何建议将不胜感激。注意——API 似乎对任何事情都返回 401 错误,包括我认为应该是 400 的错误——我相信我的 x-api-key 凭据是正确的,并且已在其他 httpClient 调用的其他地方成功使用。
解决方案
请注意,它request
已创建并填充但未以任何方式使用。这与返回代码匹配(401 未授权)。
我想你可以使用
//request.Headers.Add("x-api-key", xApiKey);
content.Headers.Add("x-api-key", xApiKey);
推荐阅读
- wpf - WPF 树视图展开操作
- python - 如何从“更新”值中获取发件人信息
- python - 在 asyncio 子进程上调用 .terminate() 会引发 ProcessLookupError
- node.js - Nodejs - 从 promise.then() 内部返回
- vb.net - 此 IDisposable 代码是否需要类对象的手动 .Dipose() ?
- javascript - 排除数组中两个数字之间的所有内容
- python - Django - AttributeError:“NoneType”对象没有属性“pk”
- typeclass - 如何在没有冗余方法的 Purescript 中定义类型类实例
- java - Java如何将文件对象列表转换为路径对象列表?
- google-cloud-platform - 如何从受 CMEK(客户管理的密钥)保护的 BigQuery 表在 Tableau 中创建数据源?