当前位置: 首页 > 知识库问答 >
问题:

HttpClient返回带有正确授权标题的401

盛城
2023-03-14

我已经尝试使用vb使用eventbrite api有一段时间了。net,我使用HttpClient来使用api,但是它只返回HTTP 401 unhorised当我使用postman调用具有相同头的相同方法时,它返回具有HTTP 200 OK

Dim objClient As New HttpClient()

objClient.BaseAddress = New Uri("https://www.eventbriteapi.com/v3/")
objClient.DefaultRequestHeaders.Authorization = New AuthenticationHeaderValue("Bearer", "IODVRTRFJ5FVEXZXXXXX")

Dim objResponse As HttpResponseMessage = Await objClient.GetAsync("events/search?organizer.id=77181XXXXX")

If objResponse.IsSuccessStatusCode Then

    Dim strJSON As String = Await objResponse.Content.ReadAsStringAsync
    txtOutput.Text = strJSON

Else

    txtOutput.AppendText(objResponse.ToString + vbCrLf)
    txtOutput.AppendText(objResponse.RequestMessage.ToString + vbCrLf)

End If

objClient.Dispose()
Method: GET, RequestUri: 'https://www.eventbriteapi.com/events/search?organizer.id=77181XXXXX', Version: 1.1, Content: <null>, Headers:
{
  Authorization: Bearer IODVRTRFJ5FVEXZXXXXX
}
StatusCode: 401, ReasonPhrase: 'UNAUTHORIZED', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Transfer-Encoding: chunked
  Connection: keep-alive
  x-xss-protection: 1; mode=block
  x-content-type-options: nosniff
  Vary: Accept
  X-UA-Compatible: IE=edge
  X-Frame-Options: SAMEORIGIN
  Access-Control-Allow-Origin: *
  Access-Control-Allow-Headers: Authorization
  Date: Fri, 28 Nov 2014 14:32:02 GMT
  P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
  Set-Cookie: SS=AE3DLHTSIyq8Ey6stmsFe7sH0LwxwTjQNw; Domain=.eventbriteapi.com; httponly; Path=/; secure
  Set-Cookie: eblang=lo%3Den_US%26la%3Den-us; Domain=.eventbriteapi.com; expires=Sat, 28-Nov-2015 14:32:02 GMT; httponly; Path=/
  Set-Cookie: SP=AGQgbblV535q50zSGYa6PvdeMsiuIPDnFlsnyVrk5VIvAnFRtrUHh7AU791a46nkYXJQhH3_VZLFgHuw4j8sAYXPy3l6adKHpQ5js-vjoXyJpTp51nd4Ewnhd-lS9UlI2YL0rUaHCkLvt4_buXJOvRuN222hINBjvQBsJPrR9woApj_ic0MT0cJcNIDsY40PnEOhH8p2xijrXVZHQa6fjwemsjgJEu_Vn6NBi4UO9hBL7sLl-eetYyE; Domain=.eventbriteapi.com; httponly; Path=/
  Set-Cookie: G=v%3D1%26i%3D1429e3af-ac09-4b67-b2a3-1f4473c28bcd%26a%3D51b%26s%3DAPDvTK5mqMI40Xz80zXcPKvFx7daGz_DOA; Domain=.eventbriteapi.com; expires=Sat, 28-Nov-2015 14:32:02 GMT; httponly; Path=/
  Set-Cookie: AN=; expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/
  Server: nginx
  Allow: GET
  Allow: HEAD
  Allow: OPTIONS
  Content-Type: application/json
}

共有2个答案

公良琛
2023-03-14

我也有类似的问题。建筑物net应用程序,我使用的是HttpClient类。我调用的url是“http”,服务器将其重定向到https。显然,这会删除标题。不是通过邮递员发生的!!

解决方案:使用httpS

孙嘉
2023-03-14

我之所以得到401未授权的是因为当我最初调用api时,我正在查询https://www.eventbriteapi.com/v3/events/search?organizer.id=77181XXXXX

此URL无效,应为https://www.eventbriteapi.com/v3/events/search/?organizer.id=77181XXXXX(注意额外的/搜索后的内容)

Eventbrite自动将我重定向到正确的URL,但它丢失了身份验证标头,因此未经授权。

Dim objClient As New HttpClient()

Try

    objClient.BaseAddress = New Uri("https://www.eventbriteapi.com/v3/")
    objClient.DefaultRequestHeaders.Authorization = New AuthenticationHeaderValue("Bearer", Context.EventBriteApiToken)

    Dim objResponse As HttpResponseMessage = Await objClient.GetAsync("users/" + Context.EventBriteUserId + "/owned_events/?page=" + intPage.ToString)
    objResponse.EnsureSuccessStatusCode() '** Throws exception

    Dim strJSON As String = Await objResponse.Content.ReadAsStringAsync
    Return JsonConvert.DeserializeObject(Of EventBrite.EventSearchResponse)(strJSON)

Catch ex As Exception

    Throw ex

Finally

    objClient.Dispose()

End Try
 类似资料:
  • 我正在实现Spark数据源API v1的buildScan方法。 我正在尝试读取一个带有标题的。csv文件。 但是buildScan()内部的df.show返回正确的列。 我无法找到列映射到底哪里出错了。

  • 问题内容: 我正在尝试发送跨域域并添加自定义的“授权”标头。请参见下面的代码。 错误: XMLHttpRequest无法加载{url}。请求标头字段Access-Control-Allow-Headers不允许授权。 我也尝试过: 在ajax请求中。 可能是jquery-ajax框架阻止了跨域身份验证?我怎样才能解决这个问题? 更新: 顺便说一句:是否有一种更安全的方法将auth.key存储在客户

  • 我有一个用于REST API的HttpClient。然而,我在设置授权头时遇到了麻烦。我需要将头设置为我在执行OAuth请求时收到的令牌。我看到了一些.NET的代码, 但是,WinRT中不存在凭据类。有人知道如何设置授权头吗?

  • 问题内容: 我使用mysql 5.7 我想将联接表的结果串联到单列中。我使用包裹在函数中的函数。这是查询 列包含来自联接表的数据。数据已正确检索,但问题是列未转换为正确的JSON。 如您所见,最后有点“切”。 我也尝试过,但是现在它不能转换为正确的数组。它看起来像字符串太大,不适合列。有办法解决吗? 更新 问题必须出在不适合列的st大小中。我尝试从联接表中选择较少的列,并且它可以正常工作。也许有一

  • 我们正在使用AWS Lambda授权器和API网关来保护我们的下游API。 下面是我们基于Java的lambda授权程序的代码片段 我们需要401(“未经授权”)作为一个回应,有人能请帮助如何做这一点吗?我们有用Java编写的lambda授权器。

  • 所以,我试图用Tweepy喜欢一个推文,但是这个错误正在发生: 有什么想法吗?