【发布时间】:2019-09-03 10:22:17
【问题描述】:
我可以从 Postman 成功运行以下 OpenStreetMap api:
https://nominatim.openstreetmap.org/reverse?format=json&lat=30.32736&lon=56.91912
邮递员请求:
GET /reverse?format=json& lat=30.32736& lon=56.91912 HTTP/1.1
Host: nominatim.openstreetmap.org
cache-control: no-cache
Postman-Token: 92646056-107c-4011-b35f-85858ec715bd
但是当尝试使用此代码在 c# 中调用它时:
HttpWebRequest objRequest = (HttpWebRequest)WebRequest
.Create("https://nominatim.openstreetmap.org/reverse?format=json&lat=30.32736&lon=56.91912");
objRequest.Method = "GET";
objRequest.Headers.Add("User-Agent: Other");
WebResponse response = (WebResponse)objRequest.GetResponse();
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
string result = "";
using (StreamReader responseStream = new StreamReader(objResponse.GetResponseStream()))
{
result = responseStream.ReadToEnd();
responseStream.Close();
}
我收到以下错误:
System.Net.WebException: '远程服务器返回错误: (403) 禁止。'
上线:
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
我搜索后发现建议在请求中添加以下标头:
objRequest.Headers.Add("User-Agent: SomeName");
但还是不行。
【问题讨论】:
-
访问捐款资助的服务器时请设置有效的用户代理。
-
@scai 当然,我会的。
标签: c# openstreetmap webrequest