You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#调用地理编码WebService返回401未授权,手动请求正常求排查

解决调用Gisgraphy地理编码服务返回401未授权的问题

我太懂这种明明手动能访问,一写代码就报错的郁闷了!咱们来拆解下你的问题:

先看你出问题的代码:

WebRequest request = WebRequest.Create("https://services.gisgraphy.com/geocoding/?address=paris");
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "GET";
WebResponse response = request.GetResponse(); // 错误发生在此处

问题到底出在哪?

罪魁祸首就是你加的request.Credentials = CredentialCache.DefaultCredentials;这一行!
手动用浏览器访问时,浏览器不会主动发送Windows系统的默认用户凭据,但你的代码强制给请求带上了这个身份信息。而Gisgraphy的这个公开地理编码服务根本不需要任何授权凭据,它收到多余的身份信息后,反而会返回401未授权错误。

怎么修复?

直接删掉设置凭据的那一行就搞定了,修改后的代码如下:

WebRequest request = WebRequest.Create("https://services.gisgraphy.com/geocoding/?address=paris");
request.Method = "GET";
WebResponse response = request.GetResponse();

额外小建议

顺便提一句,WebRequest是比较老旧的API了,现在更推荐用HttpClient来处理HTTP请求,代码更简洁,也更贴合现代.NET的开发习惯:

using (HttpClient client = new HttpClient())
{
    string responseContent = await client.GetStringAsync("https://services.gisgraphy.com/geocoding/?address=paris");
    // 这里可以添加对返回内容的解析逻辑
}

内容的提问来源于stack exchange,提问作者user5992977

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:27:59