Python urllib.request 显示 OpenElevation 出现 RemoteDisconnected 错误 API
Python urllib.request shows RemoteDisconnected error with OpenElevation API
我有一个应用程序(用 PyQt5 编写)returns 位置的 x、y 和高程。当用户填写 x、y 并点击 getz 按钮时,应用会调用以下函数:
def getz(self, i):
"""calculates the elevation"""
import urllib
url = "https://api.open-elevation.com/api/v1/lookup"
x = self.lineEditX.text()
y = self.lineEditY.text()
url = url + "\?locations\={},{}".format(x, y)
print(url)
if i is "pushButtonSiteZ":
response = urllib.request.Request(url)
fp= urllib.request.urlopen(response)
print('response is '+ response)
self.lineEditSiteZ.setText(fp)
根据 Open Elevation 指南,它说您必须以以下形式提出请求:
curl https://api.open-elevation.com/api/v1/lookup\?locations\=50.3354,10.4567
为了获取高程数据作为 JSON 对象。但就我而言,它 returns 一条错误消息:
raise RemoteDisconnected("Remote end closed connection without"
RemoteDisconnected: Remote end closed connection without response
什么也没发生。我该如何解决这个问题?
没有别的办法只能创建一个循环(尝试直到响应正常)。因为Open Elevation API 处理这么多回复还是有问题的。但是下面的一段代码在可能很长的延迟之后才起作用:
def getz(self, i):
import json
import requests
url = "https://api.open-elevation.com/api/v1/lookup"
"""calculates the elevation"""
if i is 'pushButtonSiteZ':
x = self.lineEditSiteX.text()
y = self.lineEditSiteY.text()
param = url + '?locations={},{}'.format(x,y)
print(param)
while True:
try:
response = requests.get(param)
print(response.status_code)
if str(response.status_code) == '200':
r = response.text
r = json.loads(r)
out = r['results'][0]['elevation']
print(out)
self.lineEditSiteZ.setText(str(out))
cal_rng(self)
break
except ConnectionError:
continue
except json.decoder.JSONDecodeError:
continue
except KeyboardInterrupt:
continue
except requests.exceptions.SSLError:
continue
except requests.exceptions.ConnectionError:
continue
我有一个应用程序(用 PyQt5 编写)returns 位置的 x、y 和高程。当用户填写 x、y 并点击 getz 按钮时,应用会调用以下函数:
def getz(self, i):
"""calculates the elevation"""
import urllib
url = "https://api.open-elevation.com/api/v1/lookup"
x = self.lineEditX.text()
y = self.lineEditY.text()
url = url + "\?locations\={},{}".format(x, y)
print(url)
if i is "pushButtonSiteZ":
response = urllib.request.Request(url)
fp= urllib.request.urlopen(response)
print('response is '+ response)
self.lineEditSiteZ.setText(fp)
根据 Open Elevation 指南,它说您必须以以下形式提出请求:
curl https://api.open-elevation.com/api/v1/lookup\?locations\=50.3354,10.4567
为了获取高程数据作为 JSON 对象。但就我而言,它 returns 一条错误消息:
raise RemoteDisconnected("Remote end closed connection without"
RemoteDisconnected: Remote end closed connection without response
什么也没发生。我该如何解决这个问题?
没有别的办法只能创建一个循环(尝试直到响应正常)。因为Open Elevation API 处理这么多回复还是有问题的。但是下面的一段代码在可能很长的延迟之后才起作用:
def getz(self, i):
import json
import requests
url = "https://api.open-elevation.com/api/v1/lookup"
"""calculates the elevation"""
if i is 'pushButtonSiteZ':
x = self.lineEditSiteX.text()
y = self.lineEditSiteY.text()
param = url + '?locations={},{}'.format(x,y)
print(param)
while True:
try:
response = requests.get(param)
print(response.status_code)
if str(response.status_code) == '200':
r = response.text
r = json.loads(r)
out = r['results'][0]['elevation']
print(out)
self.lineEditSiteZ.setText(str(out))
cal_rng(self)
break
except ConnectionError:
continue
except json.decoder.JSONDecodeError:
continue
except KeyboardInterrupt:
continue
except requests.exceptions.SSLError:
continue
except requests.exceptions.ConnectionError:
continue