【发布时间】:2015-12-28 21:24:12
【问题描述】:
我有一个非常奇怪的问题,我希望有人能把我送到正确的方向。我会尽力提供尽可能多的信息,但如果我错过了任何重要的信息,我将非常乐意提供额外的信息。
我正在尝试从 Azure 移动服务 .Net 后端向 FourSquare API 发出请求,但我得到“远程服务器返回错误:(403)”与我做什么无关!我用来测试的 URL 如下。我正在使用一个非常基本的请求 URL 进行测试,以尽量减少查询字符串参数的任何问题。我还创建了一个临时的 FourSqaure 应用程序,以便我可以为这篇文章提供确切的 URL。
工作原理是有一个 AngularJS Web 客户端向 Azure 移动服务 API 发出请求。然后移动服务向 FourSquare API 发出请求并将结果返回给 AngularJS 客户端。 所以这就是正在发生的事情: 1.在我的开发机器上从移动服务向 FourSquare 发出请求时,它工作正常 2.当从谷歌浏览器中的另一个 REST 客户端向 FourSquare API 发出请求时,它工作正常 3. 从本地机器上的 .Net 控制台应用程序发出请求时,它工作正常。我添加了下面创建的请求,使用 Fiddler 捕获。 4. 从控制台应用程序(如下所示)获取完全相同的代码并将其添加到 Azure 移动服务时,它会返回 403 错误。错误的详细信息记录在 Azure 门户中,因此我知道客户端已成功连接到移动服务,并且 403 来自 WebRequest。
提琴手请求(本地工作):
GET https://api.foursquare.com/v2/venues/categories?client_id=RGRB1T4E2XZN5FMT51VRTSB5VC4AH3HHYJJT5KF5HXFMPK5P&client_secret=0XKMB2ZPUVE1W2MICTNG0ETJPETDNDSNQCVB32WTBBHKNRIC&v=20151021 HTTP/1.1
Accept: *.*
Content-Type: text/plain; charset=utf-8
Host: api.foursquare.com
Connection: Keep-Alive
控制台应用程序代码(在本地工作,但不在云端)
Dim request As WebRequest - WebRequest.Create("https://api.foursquare.com/v2/venues/categories?client_id=RGRB1T4E2XZN5FMT51VRTSB5VC4AH3HHYJJT5KF5HXFMPK5P&client_secret=0XKMB2ZPUVE1W2MICTNG0ETJPETDNDSNQCVB32WTBBHKNRIC&v=20151021")
request.Credentials = CredentialCache.DefaultCredentials
With Ctype(request,HttpWebRequest)
.Accept = "*.*"
.ContentType = "text/plain; charset=utf-8"
.Method = "GET"
End With
Dim response As WebResponse = request.GetResponse()
WriteLine(CType(response, HttpWebResponse).StatusDescription)
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
WriteLine(responseFromServer)
reader.Close()
response.Close()
任何关于如何进一步排除故障甚至我做错了什么的建议都将不胜感激!谢谢!
【问题讨论】:
-
为了没有其他人像我一样浪费任何时间,我已经给 FourSquare 发送了电子邮件,他们回复说,我引用“不幸的是,由于过去一周 Azure 过度拥塞,我们一直密切关注控制来自 Azure Web 的 API 流量。”。所以我已经要求他们确认一些事情,特别是如果请求实际上被阻止,为什么错误消息没有给出任何指示以及为什么他们没有将其公开。假设我正确理解了该消息,我将在确认后更新帖子。
标签: azure-mobile-services foursquare