首页 > 解决方案 > App Center push 在 Postman 中有效,但在我的 C# 应用程序中无效

问题描述

我的 C# 应用程序中有一项服务,它使用 App Center 的 api 推送通知。我的所有请求都以 401(未经授权)返回,但当我在邮递员上使用相同的详细信息时,即contentheader authowner_nameapp_name它成功运行并发送应用程序。

这非常令人困惑,我想知道 Postman 是否会处理一些我遗漏的额外点点滴滴。

C# 推送通知服务

private async Task<bool> PostHttpRequest(PushNotificationModel pushNotificationModel)
{
    _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("X-API-Token", _appCenterApiToken);
    var url = "https://api.appcenter.ms/v0.1/apps/myowner/myapp/push/notifications";
    var content = JsonConvert.SerializeObject(pushNotificationModel);
    var buffer = Encoding.UTF8.GetBytes(content);
    var byteContent = new ByteArrayContent(buffer);
    byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    var response = await _httpClient.PostAsync(url, byteContent);
    return response.IsSuccessStatusCode;
}

我调试了这段代码,并使用传递给客户端的相同数据在 Postman 上使用,因此Model例如为什么数据不存在。

非常感谢您的帮助!

标签: c#dotnet-httpclientvisual-studio-app-center

解决方案


我使用 Telerik Fiddler 解决了这个问题。这个有用的工具允许您主动查看进出您的机器的 HTTP 流量。现在这个错误对我来说是一个愚蠢的错误,但它归结为改变这个:

_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("X-API-Token", _appCenterApiToken);

至:

_httpClient.DefaultRequestHeaders.Add("X-API-Token", _appCenterApiToken);

由于第一个实际上出现在HTTP标头中,Authorization : X-API-Token apiToken而不是X-API-Token : apiToken导致请求错误,因此返回401 (Unauthorised)


推荐阅读