C#在401中调用Web服务的结果

Yos*_*ssi -2 c# asp.net web-services

我正在尝试调用一个简单的Web服务来获取一个地址的经度和纬度,当我手动尝试该地址时可以使用:

https://services.gisgraphy.com/geocoding/?address=paris
Run Code Online (Sandbox Code Playgroud)

但是,使用该代码,我会得到401未经授权。.我在做什么错呢?

        WebRequest request = WebRequest.Create("https://services.gisgraphy.com/geocoding/?address=paris");
        request.Credentials = CredentialCache.DefaultCredentials;
        request.Method = "GET";
        WebResponse response = request.GetResponse(); // It happens here.
Run Code Online (Sandbox Code Playgroud)

Cod*_*ter 7

我究竟做错了什么?

您尚未阅读属于您所调用的API的网站顶部的大蓝条:

Gisgraphy是开放源代码,仅使用开放数据。该服务器仅用于演示。测试,播放网络服务,然后在本地安装Gisgraphy或订阅高级托管服务

因此,他们可能检测到您正在从操场外调用其API,并拒绝您这样做。

因此,要么在本地安装它,要么订阅他们的托管服务。后者可能为您提供了一个API密钥,可让您进行API调用。

当然,您可以通过模仿您的请求来自浏览器来伪造自己的方法,例如使用User-agent和Accept标头,但是可以肯定的是,它们将尝试检测到此问题并完全阻止您的IP地址。只需付款,或在本地托管。