【问题标题】:How does Google's API enforce usage limits for a desktop app?Google 的 API 如何对桌面应用实施使用限制?
【发布时间】:2012-01-12 09:54:41
【问题描述】:

我正在使用 HttpWebRequest 从 VB.net 桌面应用程序中使用 Google 的 DistanceMatrix API。我向它传递了一个包含两个位置(表示为经度和纬度)的 URL,它为我提供了使用真实街道以英里和分钟为单位的行驶距离。 (实际上是米和秒,但我转换它。)

它在我的桌面上运行良好。我的代码最重要的部分如下。但我不是网络/互联网/网络人,我是通过例子来做的。到目前为止,我不必知道它是如何工作的,我对此很满意。

问题: 谷歌表示他们有使用限制。就我个人而言,我并没有达到这些限制,但我的应用程序可能会分发给许多人,如果有很多其他人使用它,我们会一起使用。事实上,一些用户可能会从单个工作站超越限制。如果需要,我愿意为额外的使用付费,但我不知道在这种情况下是否需要这样做。

问题: 我已经彻底看过了(或者至少我认为我看过了),据我所知,谷歌并没有准确记录他们在这种情况下如何监控使用情况。该文档似乎假定它将始终从 Web 服务器使用,并且文档中有一些引用表明它不能从某些域中使用。但这是一个 Windows 窗体应用程序,那么它真的是“按域”吗?什么域?它是服务提供商的域吗?还是通过IP地址?重要的是,在这种情况下,每个用户会被单独计算,还是会以某种方式与应用程序本身相关联?

对不起,如果我看起来很笨。但是有什么帮助吗?

我的代码中的相关函数如下,还有谷歌关于这个 API 的文档页面。

http://code.google.com/apis/maps/documentation/distancematrix/

Public Function GetHTML(ByVal URL As String, Optional ByVal UserName As String = "", Optional ByVal Password As String = "") As String
    Try
        Dim reader As StreamReader
        Dim Request As HttpWebRequest = HttpWebRequest.Create(URL)
        'The following line empowers some downloads to work.
        If UserName <> "" Then
            Request.Credentials = New NetworkCredential(UserName, Password)
        End If
        Request.AllowAutoRedirect = True
        Request.CookieContainer = CookieJar
        Dim Response As HttpWebResponse = Request.GetResponse()
        reader = New StreamReader(Response.GetResponseStream())
        Response.Close()
        Return reader.ReadToEnd()
    Catch
        Return ""
    End Try
End Function

【问题讨论】:

  • 您的网址中是否包含key 或类似名称?
  • 没有。我知道你的意思,因为我碰巧也使用雅虎的地理编码服务,并且需要一个密钥。但我用于 Google 的 DistanceMatrix 的确切 URL 是:maps.googleapis.com/maps/api/distancematrix/…(XXXX 被长/纬度对替换。)看,没有键。

标签: vb.net google-maps-api-3 httpwebrequest


【解决方案1】:

documentation 中描述的使用限制将没有来自您的应用程序的识别信息(只需查看您向 Google 发出的 http 调用),因此这些限制将在每个用户的基础上实施。如果您联系 Google 的销售团队,他们可能会提供更多信息,说明如何解决您的用例,因为用户可能需要更高的限制。

【讨论】:

  • 可以,但是在使用此服务时也不会识别用户。那么从他们的角度来看,除了 IP 地址之外,他们是否还有其他东西可以计算使用情况?
  • 澄清:“他们”的意思是谷歌。
  • 这里提到了基于 IP 的限制:stackoverflow.com/a/8857689/1086560
  • 是的,在这种情况下,IP 地址似乎是他们调节使用的唯一手段。正如另一个线程中所指出的,共享 IP 地址可能会使使用量增加。我当前的项目(尚未发布)通过存储位置及其相关的行驶时间来减少使用量。 (因为需要反复检查相同的驱动器。)虽然这有帮助,但这是非法的,因为它违反了他们的条款。我的代码还假设从 A 到 B 的行驶时间与相反的情况相同:B 到 A。实际上它可以相差 10% 左右,但对于我的应用程序来说这是可以接受的。谢谢大家。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 2021-10-20
  • 1970-01-01
相关资源
最近更新 更多