Vb.net 谷歌如何';s API是否强制桌面应用程序的使用限制?

Vb.net 谷歌如何';s API是否强制桌面应用程序的使用限制?,vb.net,google-maps-api-3,httpwebrequest,Vb.net,Google Maps Api 3,Httpwebrequest,我正在使用Google的DistanceMatrix API,它来自一个使用HttpWebRequest的VB.net桌面应用程序。我向它传递一个包含两个位置(以经度和纬度表示)的URL,它给出了使用真实街道的行驶距离(以英里和分钟为单位)。(实际上是米和秒,但我将其转换。) 它在我的桌面上工作得很好。下面是我代码中最重要的部分。但我不是一个网络/互联网/网络的人,我只是以身作则。到目前为止,我不需要知道它是如何工作的,我对此很冷静 问题是: 谷歌说他们有使用限制。就我个人而言,我并不接近这些限

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

它在我的桌面上工作得很好。下面是我代码中最重要的部分。但我不是一个网络/互联网/网络的人,我只是以身作则。到目前为止,我不需要知道它是如何工作的,我对此很冷静

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

问题是: 我已经仔细看过了(或者至少我认为我看过),就我所能看到的而言,谷歌并没有记录他们在这种情况下是如何监控使用情况的。文档似乎假定它将始终从web服务器使用,文档中的一些引用无法从某些域使用。但这是一个windows窗体应用程序,所以它真的是“按域”的吗?什么域名?它是服务提供商的域吗?还是通过IP地址?重要的是,在这种情况下,每个用户都会被单独计算,还是会以某种方式与应用程序本身联系在一起,无论它位于何处

对不起,如果我看起来像个傻瓜。但是有什么帮助吗

下面是我的代码中的相关函数,这是Google针对该API的文档页面

公共函数GetHTML(ByVal URL作为字符串,可选ByVal用户名作为字符串=”,可选ByVal密码作为字符串=”)作为字符串
尝试
作为StreamReader的Dim reader
Dim请求作为HttpWebRequest=HttpWebRequest.Create(URL)
“下面这行代码允许一些下载工作。
如果用户名为“”,则
Request.Credentials=新网络凭据(用户名、密码)
如果结束
Request.AllowAutoRedirect=True
Request.CookieContainer=CookieJar
Dim响应为HttpWebResponse=Request.GetResponse()
reader=新的StreamReader(Response.GetResponseStream())
答复:Close()
返回reader.ReadToEnd()
抓住
返回“”
结束尝试
端函数

中描述的使用限制没有来自应用程序的识别信息(只需查看您向Google发出的http调用),因此限制将按每个用户执行。也许如果你联系谷歌的销售团队,他们可以提供更多关于如何解决用户可能需要更高限制的用例的信息。

你的URL中是否有
键或类似的键?不。我知道你的意思,因为我碰巧也使用雅虎的地理编码服务,这需要一个键。但我在谷歌距离矩阵中使用的确切URL是:(XXXX被Long/Lat对替换。)请看,没有键。当然可以,但使用此服务时也无法识别用户。因此,从他们的角度来看,除了IP地址之外,他们还有什么可以计算使用率的吗?澄清:“他们”的意思是谷歌。这里提到了基于IP的限制:是的,在这种情况下,IP地址似乎是他们调节使用率的唯一手段。正如在另一个线程中指出的那样,共享IP地址可能会增加使用量。我当前的项目(尚未发布)通过存储位置及其相关的驱动器时间来减少使用。(因为需要反复检查相同的驱动器。)虽然这有帮助,但这是非法的,因为这违反了他们的条款。我的代码还假设从A到B的驾驶时间与从B到A的驾驶时间相同。事实上,这可能相差10%左右,但对于我的应用程序来说,这是可以接受的。谢谢大家。
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