首页 > 解决方案 > 使用 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 调用的其他地方成功使用。

标签: blazordotnet-httpclientblazor-server-side

解决方案


请注意,它request已创建并填充但未以任何方式使用。这与返回代码匹配(401 未授权)。

我想你可以使用

//request.Headers.Add("x-api-key", xApiKey);
  content.Headers.Add("x-api-key", xApiKey);

推荐阅读