HttpClient PostAsync 到 Blogger API

Posted

技术标签:

【中文标题】HttpClient PostAsync 到 Blogger API【英文标题】:HttpClient PostAsync to Blogger API 【发布时间】:2013-01-31 22:37:52 【问题描述】:

我正在使用以下 API 来与 Google Blogger 进行交互。我需要在用户博客中插入一篇文章。但是,我的 PostAsync 功能有问题。我收到 401 告诉我,尽管有 API 密钥,但我的请求未获得授权,但是我认为我可能没有正确插入我的 OAuth 令牌。

我有以下代码,

这是我设置授权标头的代码,(注意密钥是假的,但与我认为的 OAuth 令牌形式相同)

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("ya29.AHES6ZTBZi1dWPVdlcF7qAD-nSM6XxwY2323232m4lXW");

这是我的 PostAsync 函数

                HttpResponseMessage response = await req.PostAsync(URLs.postBlogURL + blogID + URLs.postBlogURLPost, new StringContent(json));

谁能告诉我哪里出错了?干杯。

[更新]

我不确定授权是否必须在其中包含字符串承载。

    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer ya29.AHES6ZTBZi1dWPVdlcF7qAD-nSM6XxwY2323232m4lXW");

【问题讨论】:

有没有办法独立验证您的 API 密钥?另外,请尝试检查响应的内容,它可能包含一些额外的诊断信息。 是的,我可以执行需要 API 的获取请求。因此,这绝对取决于发布请求。我只是觉得我没有为我的 HttpClient 正确设置授权标头。 您的GET 请求怎么样?在网络浏览器中还是使用 HttpClient? 您是否使用过 Fiddler(或类似的东西)来比较您的工作 GET 请求和失败的 POST? @Snixtor 据我所知,我没有做任何 GET 请求。我使用“WebAuthenticationResult”和“WebAuthenticationBroker”进行身份验证。 【参考方案1】:

这就是我能够为我的请求设置正确的 OAuth auth 标头的方式:

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", _accessTokenWrapper.Token.access_token );

构造函数的第一个参数是用于授权标头的方案。所以在请求中,标头是:

Authorization: Bearer the access token string

【讨论】:

谢谢!在这里工作正常。 嗨@Scott,您能发布 accessTokenWrapper 类的代码吗?我有兴趣为令牌值创建一个全局存储。谢谢 什么命名空间和 NuGet 包我会得到你用来创建 _accessTokenWrapper 对象的类?

以上是关于HttpClient PostAsync 到 Blogger API的主要内容,如果未能解决你的问题,请参考以下文章

HttpClient.PostAsync 用于上传文件

HttpClient 通过 PostAsync 上传文件的奇怪行为

网络条件差时如何处理文件HttpClient.PostAsync文件上传?

Asp.net Web Api HttpClient 强类型 PostAsync

HttpClient.PostAsync 崩溃应用。如何捕捉异常?

异步等待 HttpClient.PostAsync 调用