Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复错误:远程服务器返回错误:(403)禁止| OpenStreet-Namingm API_C#_.net_Visual Studio_Openstreetmap - Fatal编程技术网

C# 如何修复错误:远程服务器返回错误:(403)禁止| OpenStreet-Namingm API

C# 如何修复错误:远程服务器返回错误:(403)禁止| OpenStreet-Namingm API,c#,.net,visual-studio,openstreetmap,C#,.net,Visual Studio,Openstreetmap,我试图从OpenStreet访问Namingm API以获取纬度和经度,但它得到了错误:远程服务器返回了一个错误:(403)禁止 我的.Net框架是4.6 这是我的密码: private void getLatLon(ref float latitude, ref float longitude) { dynamic CallOpenStreetApiRestService() { dynamic r

我试图从OpenStreet访问Namingm API以获取纬度和经度,但它得到了错误:
远程服务器返回了一个错误:(403)禁止

我的.Net框架是4.6

这是我的密码:

private void getLatLon(ref float latitude, ref float longitude)
        {
            dynamic CallOpenStreetApiRestService()
            {
                dynamic result;

                string uri = $"http://nominatim.openstreetmap.org/search?street=Maracanã Stadium&format=json";
                var req = (HttpWebRequest)HttpWebRequest.Create(uri);
                req.Method = "GET";
                //req.ContentType = "application/json";
                //req.UseDefaultCredentials = true;
                //req.Credentials = CredentialCache.DefaultCredentials;
                //req.Proxy.Credentials = CredentialCache.DefaultCredentials;

                using (var resp = req.GetResponse())
                {
                    var results = new StreamReader(resp.GetResponseStream()).ReadToEnd();
                    result = JArray.Parse(results);
                }

                return result;
            }

            JArray result = CallOpenStreetApiRestService();
            foreach (dynamic it in result)
            {
                var lat = Convert.ToInt32(it.lat.ToString());
                var lon = Convert.ToInt32(it.lon.ToString());

                latitude = lat;
                longitude = lon;
            }

        }
正如您所看到的,我已经尝试放置默认凭据,但并不幸运
uri在具有和不具有验证证书的Insomina上工作

operations.osmfoundation.org/policies/namignim

在使用策略中,它至少需要UserAgent

这对我很有用:
req.UserAgent=“.NET Framework测试客户端”

不错!我没有阅读文档,是用户代理。您应该将用户代理设置为更有用的名称,即您正在开发的软件的名称。