我正在尝试调用一个简单的 Web 服务来获取地址的长和纬度,当我手动尝试时可以工作:
https://services.gisgraphy.com/geocoding/?address=paris
但是使用代码,我得到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.
我做错了什么?
您尚未阅读属于您正在调用的 API 的网站顶部的蓝色大条:
Gisgraphy是开源的,只使用开放数据。此服务器仅用于演示。测试它,使用网络服务,然后在本地安装 Gisography 或订阅高级托管服务
因此,他们可能会检测到您正在从他们的操场外调用他们的 API,并拒绝您这样做。
因此,要么在本地安装它,要么订阅他们的托管服务。后者可能会为您提供一个 API 密钥,允许您进行 API 调用。
当然,您可以通过模仿您的请求来自浏览器来伪造自己的方式,例如使用User-agent和Accept标头,但是他们肯定会尝试检测并完全阻止您的IP地址。只需付款,或在本地托管即可。
关于这个问题的几件事:
- 检查网址/网络服务是否可通过以下方式直接访问 浏览器/邮递员工具。
- 其次,正如我的一位朋友提到的 Web服务具有一些安全协议。可能是它不允许 来自外部的请求(即其域以外的请求进入(
一旦你钻取了上述两种可能性,你应该处于一个良好的状态,可以继续前进。