0

尝试从 api.hostip.info 上传 xml 纬度、经度坐标。Python minidom 在本地 GAE(和 iPython)中运行良好,但在 Google GAE 中无法运行。我可以抛出下面的代码,但我认为我在从另一个网站提取 xml 时缺少特定于 Google GAE 的内容。

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" 
4

1 回答 1

0

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

于 2013-09-01T19:12:50.160 回答