从api.hostip.info中提取xml。 Minidom适用于本地GAE,但不适用于Google GAE

时间:2013-08-29 16:30:06

标签: python google-app-engine minidom

尝试从api.hostip.info上传xml纬度,经度坐标。 Python minidom在本地GAE(和iPython)中运行良好,但在Google GAE中不起作用。我可以抛出下面的代码,但我认为我遗漏了一些特定于Google GAE的东西从另一个网站中提取xml。

ip = self.request.remote_addr
IP_URL = "http://api.hostip.info/?="
def get_coords(ip):
    url = IP_URL + ip
    xml = None
    try:
        xml = urllib2.urlopen(url).read()
    except urllib2.URLError, e:
        return "in URLError "+ e.code   
    try:
        if xml:
            s = minidom.parseString(xml)
        else:
            return "unable to parse content"
    except:
        return "exception error unable to parse content"
    try:
        if s:
            coords = s.getElementsByTagName("gml:coordinates")
        else:
            return "unable to get coords"
    except:
        return "exception error unable to get coords"
    try:    
        if coords:  #Google GAE fails on this if statement
            p = coords[0].childNodes[0].nodeValue
        else:
            return "unable to get node value- points"
    except:
        return "exception unable to get node-value points"
    try:
        lon, lat = coords[0].childNodes[0].nodeValue.split(',')
        points = [Point(lat,lon)]
        return points
    except:
        return "unable to return points"  
    return None + "dropped to bottom" 

1 个答案:

答案 0 :(得分:0)

问题解决了。 api.hostip.info不会基于发送的IP地址生成位置,除非是一次或两次。 ap.host.info忽略给定的IP地址,然后默认为发送方的ip位置。我使用了不同的IP地理定位器api,它运行良好